2017-05-28 88 views
0

我一直在为我的几个客户开发Real Estate组件。除了从单独的表中获取图像之外,我的所有工作都是有效的。Joomla组件 - 网站模型问题

一个网站模型的例子是城市。在城市模型中,主要获取(查询)是基于城市的属性列表。例如,如果选择城市视图或菜单项,则选择达拉斯等城市,然后在属性城市=达拉斯将显示的单城市视图属性列表中选择。

这部分工作很好,因为它应该是。问题是每个列表都有多个图像,存储在图像表中。在属性列表视图中,只需要显示单个图像(可能有很多)。

在主属性查询中添加“链接”子查询不起作用,因为它会为每个图像创建多个重复属性列表。所以,我创建了一个自定义方法,获取图像。

我用来帮助构建的编译器不支持签名方法(接受值的方法),所以我需要添加为类值。在用于特性getItems功能,我创建的类值:

$this->a_property_id = $item->id; 

然后,在自定义的getImage函数I加入

$query->where('a.propid = ' . $db->quote($this->a_property_id)); 

作为查询的一部分。理论上,这应该拉一个单独的项目,其中a.propid等于属性id,如property id = 3,然后从propid = 3的图像中拉出一个项目。

最后,我加入了现场查看如default.php图像代码在foreach的一部分:

<?php foreach ($this->items as $item): ?> 
<li> 
<div class="uk-grid uk-panel uk-panel-box"> 
<div class="uk-width-medium-1-3"> 
    <?php if(empty($this->image->path)){ ?> 
    <div> <a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel=""> <img class="uk-thumbnail uk-thumbnail-medium" src="<?php echo JURI::root().'media/com_mostwantedrealestate/images/No_image_available.png'; ?>"> </a> </div> 
    <?php } else { ?> 
    <div> <a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel=""> <img class="uk-thumbnail uk-thumbnail-medium" src="<?php echo JURI::root() . $this->image->path . $this->image->filename; ?>"></a></div> 
    <?php } ?> 
</div> 
    <div class="uk-width-medium-1-3 uk-float-left"> 
    <a href="<?php echo 'index.php?option=com_mostwantedrealestate&view=property&id='.$item->id;?>" title="<?php echo $item->name;?>" rel="" > 
    <h3><?php echo $item->name; ?></h3> 
    </a> 
    </div> 

这是一种工作,但不完全,所以我不确定我可能是什么失踪。用我编码的方式,它显示图像。如果只有一个房产列表,那么它会显示正确的图像,但是如果存在a,可以说有两个属性:id = 1和id = 3,那么它会在图像表中显示propid = 3,比id = 1显示propid = 1,id = 3显示propid = 3。

关于我可能错过的任何想法?

回答

0

您正在循环使用$this->items,但您对所有这些对象使用相同的$this->image对象。所以你一遍又一遍地看到相同的图像。

您可以通过将图像信息添加到该项目来解决此问题。由于您只想显示一张图片,您可以轻松地使用单个查询加入您的商品表格和图片表格。

另一种方法是结合模型中不同查询的必要数据,以便您可以使用类似$item->image->path之类的内容。