我的查询如下
$criteria1 = new CDbCriteria();
$criteria1->condition = 'id = 1';
$modelA=Table1::model()->find($criteria1);
我可以将它传递给视图并返回标题和条目
$this->widget('bootstrap.widgets.TbBox', array(
title' => $modelA['title'],
'content' => $modelA['entry'] ));
现在我想返回一系列条目
$criteria2 = new CDbCriteria();
$criteria2->condition = 'id > 7';
$modelB=Table1::model()->findAll($criteria2);
(顺便说一下:我正按照here列出的表格。我期望能够如下所示读取结果值的数组,但是['title']现在被视为未定义的索引(显然我希望在循环中读出这个但是你明白了)
$this->widget('bootstrap.widgets.TbBox', array(
'title' => $modelB['title'][0],
'content' => $modelB['entry'][0]));
我哪里错了? 感谢
答案 0 :(得分:1)
不,应该按照不同的顺序指定索引:首先是特定元素的编号,然后是属性的名称。另外,命名findAll
的结果会更好(=更清晰),因此它会向您(以及任何其他读者)显示它是一个集合,而不是单个模型:
$models = Table1::model()->findAll($criteria2);
// ...
$this->widget('bootstrap.widgets.TbBox', array(
'title' => $models[0]['title']
//...
));
但是如果你使用foreach
(并且你可能会),那就没有必要了:
foreach ($models as $model):
// ...
$this->widget('some.name', array(
'title' => $model['title']
);
endforeach;