0

次のクエリを試してみると、配列が生成されます。

$user = Yii::app()->reg->createCommand()
->select('studentID')
->from('Students')
->queryAll();

しかし、CGridview でクエリの値を取得しようとすると、エラーが発生します。

Property "CDbCommand.0" is not defined.

グリッドビューのコードは次のとおりです。

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid',
'dataProvider'=> new CSqlDataProvider($user),
));
4

5 に答える 5

1

編集済み: $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(),

データプロバイダーの属性はクエリにのみ依存することを忘れないでください。グリッドビュー列でエイリアスと呼び出しを使用してください。

于 2013-03-18T08:59:39.613 に答える
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, 
)); ?>
于 2013-03-20T03:36:04.367 に答える
0

CSqlDataProviderconstructorを見てください。最初のパラメーターは、SQL クエリを含む文字列または である必要がありますCdbCommandが、$user はarray.

試してみてください :

$command = Yii::app()->reg->createCommand()
  ->select('studentID')
  ->from('Students');

と :

'dataProvider'=> new CSqlDataProvider($command)

PS: 使ってみましたCActiveDataProviderか?

于 2013-03-18T07:52:27.080 に答える
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',
        ),
   ),
));

これがあなたを助けるかもしれません:)

于 2013-03-20T04:03:54.203 に答える
-2

「キーフィールド」を使用してエラーを回避します。未定義のインデックス「ID」およびキーフィールド = 選択した列の名前

$dataProvider = new CSqlDataProvider($query, array(
'totalItemCount'=>(int) $count1,
'keyField' => 'studentID',
'pagination'=>array( 'pageSize'=>30, ),));
于 2013-03-22T02:53:53.640 に答える