我有一个自定义的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专家的帮助。
答案 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