0

我有一个查询如下

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

(顺便说一句:我正在按照此处列出的表格进行操作)。我期望能够读取结果数组,如下所示,但是 ['title'] 现在被视为未定义的索引(显然我希望在循环中读取它,但你明白了)

$this->widget('bootstrap.widgets.TbBox', array(
'title' => $modelB['title'][0],
'content' => $modelB['entry'][0])); 

我哪里错了?谢谢

4

1 回答 1

1

不,索引应该以不同的顺序指定:首先是特定元素的编号,然后是属性的名称。此外,最好 (=cleaner) 命名结果,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;
于 2013-09-17T23:42:33.647 回答