Php 这句话有什么不对?

Php 这句话有什么不对?,php,yii,yii-components,zii-widgets,Php,Yii,Yii Components,Zii Widgets,我的控制器中有以下代码 public function actionViewJob() { $user_id = Yii::app()->session['user_id']; /* For User Authentication */ if (Yii::app()->user->getId() === null) $this->redirect(array('site/login'));

我的控制器中有以下代码

   public function actionViewJob() {

        $user_id = Yii::app()->session['user_id'];
        /* For User Authentication */
        if (Yii::app()->user->getId() === null)
            $this->redirect(array('site/login'));
        /* For User Authentication */

         $model=ViewJob::model()->findAll(array('user_id'=>Yii::app()->user->id));
        $params = array('model' => $model,
        );

        $this->render('viewjob', $params);
我收到错误/*未定义属性“CDbCriteria.user_id”*/ 但是当我使用findByAttrinute时,它的f9工作,但我没有得到结果,即它没有过滤数据,请帮助

视图部分:

// not posting full code //


   <?php
        $this->widget('zii.widgets.grid.CGridView', array(
            'dataProvider' =>$model->search(),  

'columns' => array(
            array(
                'name' => 'title',
                'type' => 'raw',
                'value' => 'CHtml::encode($data->title)',
                'htmlOptions' => array('style'=>'width:90px;','class'=>'zzz'),
               // 'filter'=>'false' /* for hiding filter boxes */

         ),?>
//未发布完整代码//

错误的方法。你应该改用

或者,如果仍要使用
findAll
,则应将属性作为条件传入:

$model=ViewJob::model()->findAll('user_id=:user_id',array(':user_id'=>Yii::app()->user->id));
现在查看视图:

dataProvider
需要一个
CDataProvider
的实例
CActiveRecord::search()
返回一个这样的实例:
CActiveDataProvider
。但是,
$model
是一个数组,而不是
CActiveRecord
的实例。您有两种选择:

a) 您可以编辑控制器以将
$model
用作
ViewJob
实例,而不是
ViewJob
实例的数组:

public function actionViewJob() {

    $user_id = Yii::app()->session['user_id'];
    /* For User Authentication */
    if (Yii::app()->user->getId() === null)
        $this->redirect(array('site/login'));
    /* For User Authentication */

    $model= new ViewJob;
    $model->user_id = $user_id;
    $params = array('model' => $model,
    );
    ...
b) 将视图中的
$model->search()
替换为

    'dataProvider' => new CArrayDataProvider($model)

选择(b)更容易,但它打破了惯例,例如
$model
是数组而不是对象。此外,任何过滤器/搜索功能都必须手动添加,而不是使用
CActiveRecord::search()

topher.提供的默认功能。但它不会过滤数据…显示表中的所有行。我只想显示表中的特定行。我该如何做。它工作了…非常感谢topher,…被卡住了将近两天。请添加您的
viewjob
视图以进行筛选。下面是我的完整问题:您好。请不要再添加任何问题。我会将所有3个标记为重复。另外,将
viewjob
代码添加到此问题。有关更多信息:
    'dataProvider' => new CArrayDataProvider($model)