如何在Joomla MVC列表视图中显示行的关系数据?

时间:2014-04-09 02:31:59

标签: php templates joomla joomla-component

我有一个自定义的joomla MVC组件。 该组件有一个项目表, 以及提供这些物品的投标表。

我已经想出了如何通过将“项目”添加到项目模型中来显示“项目”视图上的相关“出价”列表:

 public function getBidsById($id) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query
            ->select('*')
            ->from('#__entrusters_bids ')
            ->where('item_id = ' . $id);
    $db->setQuery($query);
    $db->query();
    return $db->loadObjectList();
}

这是views / item / view.html.php:

    $model = $this->getModel('Item', 'EntrustersModel');
    $itemID = jRequest::getVar('id');
    $bidsOnItem = $model->getBidsById($itemID);
    $this->bidsOnItem = $bidsOnItem;

例如这到views / item / tmpl / default.php:

的var_dump($这 - > items_by_id);

一切正常。

这是实际问题:

现在我需要在foreists的每一行中显示LIST视图(项目 - 带有s)的COUNT个出价。

实现这一目标的最佳方式是什么?我尝试将相同的内容添加到项目模型和views / items / view.html.php中,然后我在列表中尝试了类似的内容:

<ul> 
      <?php foreach ($this->items as $item) : ?>
 <li>Item stuff about the item. This item has <?php echo count($item->bidsOnItem); ?> bids</li>
    <?php endforeach; ?>
</ul>

但是这只返回0 - 而不是列表中每个项目的出价计数。感谢MVC专家的帮助。

2 个答案:

答案 0 :(得分:0)

你已经走了,让自己混在一起。要开始将变量分配给模板,您需要执行以下操作:

$bar = 'bar';
$this->assignRef('foo', $bar);

此外,您的查询会返回项目的列表,而不是多维项目数组。要按项目获取出价计数,您需要为每个项目

运行单独的查询

例如

<强>模型

class SomethingModelTest extends JModelLegacy {
    function getItemList() {
        // query goes here
        // return results
    }

    function getBidsByItemId($itemId) {
        // query goes here
        // return results
    }
}

查看

class SomethingViewTest extends LegacyView {
    public function display() {
        $items = $this->get('ItemList');
        foreach ($items as &$item) {
            $item->bids = $this->getModel()->getBidsByItemId($item->itemId);
        }

        $this->assignRef('items', $items);
        parent::display();
    }
}

然后使用for循环代替print count($blah);而不是print $item->bids

答案 1 :(得分:0)

我在这里重新提出了这个问题(希望以更有用的方式):Add a count of related data to each item in a joomla MVC list view