在 CGridView 中显示数据的数组格式是什么。
我将数组发送到 dataProvider ,但浏览器中没有任何内容。
我在我的模型中使用以下代码
public function ExtensionList()
{
// I'm Using 2 database So I'm calling db2->createCommand
$row = Yii::app()->db2->createCommand(array(
'select' => array('extension', 'date_created'),
'from' => 'extensions',
'where' => "extension_type = 'EXTENSION'",
))->queryAll();
return $row ;
}
我的Index.php
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'extension-grid',
'dataProvider'=>$model->ExtensionList(),
'columns'=>array(
'extension',
'date_created',
),
)); ?>
以下格式的数组有什么问题。
数组([0] =&gt;数组([extension] =&gt; 2000 [date_created] =&gt; 2013-07-24 21:15:09.993303)[1] =&gt;数组([extension] =&gt; 2001 [date_created] =&gt; 2013-07-24 21:23:07.94538)[2] =&gt;阵列( [extension] =&gt; 2002 [date_created] =&gt; 2013-07-26 11:58:59.537204))
如果我使用下面的代码,则网格显示在我的另一个模型中
$criteria=new CDbCriteria;
$criteria->select='service_id,count(*) as counts';
$criteria->condition = "sdate between '$this->startdate' and '$this->enddate'";
$criteria->group ='service_id';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array( 'pageSize' => 30 ),
));
我正在使用此类型执行查询,其工作正常并且记录显示在网格中。
但要显示我正在使用createCommand的扩展名列表,它无效。
$row = Yii::app()->dbcc->createCommand(array(
'select' => array('extension', 'extension_type', 'date_created'),
'from' => 'accounts',
'where' => "extension_type = 'EXTENSION'",
))->queryAll();
return new CActiveDataProvider($this, array(
'criteria'=> $row ,
));
注意:我正在使用Yii 1.1.13
答案 0 :(得分:0)
CGridView::dataProvider
属性必须设置为IDataProvider
的实例,不能直接将其设置为数组并期望它能够正常工作。
立即修复是创建CArrayDataProvider
并使用:
'dataProvider'=> new CArrayDataProvider($model->ExtensionList()),
也就是说,使用原始SQL获取结果集并将其提供给愚蠢的CArrayDataProvider
不是&#34; Yii方式&#34;做事情并暗示你走错了路。从问题中您不确切地说明了您的确在做什么,但请考虑使用CActiveDataProvider
或CSqlDataProvider
代替。
答案 1 :(得分:0)
have a look at CArrayDataProvider documentation您选择了ID并将其用作CArrayDataProvider中的唯一标识符
'dataProvider'=> new CArrayDataProvider($model->ExtensionList(), array('id' =>'extension' ))
,