我尝试以下查询,并生成一个数组
$user = Yii::app()->reg->createCommand()
->select('studentID')
->from('Students')
->queryAll();
但是,当我尝试在CGridview中获取查询的值时,我得到错误,
Property "CDbCommand.0" is not defined.
这是gridview的代码,
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=> new CSqlDataProvider($user),
));
答案 0 :(得分:1)
EDITED: 在您的$ model中定义数据:
public function newsearch(){
$query = "Your Query";
$count=Yii::app()->db->createCommand($query)->queryScalar();
$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>$count));
}
在您的控制器操作中:
$model = new model or assigned model;
//Your Logic //
$this->render('viewname',array('model'=>$model));
在您的视图文件中调用此函数:
'dataProvider'=> $model->newsearch(),
请记住,您的dataprovider属性仅取决于您的查询。使用别名并在gridview列中调用。
答案 1 :(得分:0)
看一下CSqlDataProvider
constructor,第一个参数应该是一个包含SQL查询的字符串,或CdbCommand
,但$ user是array
。
你应该尝试:
$command = Yii::app()->reg->createCommand()
->select('studentID')
->from('Students');
并且:
'dataProvider'=> new CSqlDataProvider($command)
PS:您是否尝试使用CActiveDataProvider
?
答案 2 :(得分:0)
这是代码,
<?php
$query = "SELECT student_name FROM smartrea_srkreg.Students";
$count=Yii::app()->reg->createCommand($query)->queryAll();
$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=>30,
),
));
var_dump($dataProvider);
?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=> $dataProvider,
)); ?>
答案 3 :(得分:0)
这是控制器的内容。将此数据提供者传递给模板
$dataProvider = new CActiveDataProvider('Students',
array(
'criteria'=>array(
'select'=>'t.studentID'
)));
在模板文件中粘贴以下代码:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'subject-grid',
'dataProvider'=>$model,
'columns'=>array(
'studetID',
array(
'class'=>'CButtonColumn',
),
),
));
这可以帮助你:)
答案 4 :(得分:-2)
使用'keyfield'来避免错误,Undefined index'id' 和keyfield =所选列的名称
$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>(int) $count1,
'keyField' => 'studentID',
'pagination'=>array( 'pageSize'=>30, ),));