2017-05-28 79 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之類的內容。