Что не так с утверждением, в Yii?

У меня есть код в моем контроллере,

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, но я не получаю результат, т. е. его не фильтруя данные, help.

просмотр раздела:

 // 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 */ ),?> 

    Неправильный метод. Вы должны использовать CActiveRecord::findAllByAttributes() вместо

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

    Или, если вы все еще хотите использовать 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() .