返回基于CDbCriteria的查询结果的问题

时间:2013-09-17 23:33:37

标签: yii

我的查询如下

$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])); 

我哪里错了? 感谢

1 个答案:

答案 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;