-->

什么是错的说法,在Yii中?(What is wrong with the statement,in

2019-10-19 20:17发布

我在我的控制器中的如下因素代码,

   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 */

         ),?>

Answer 1:

错误的方法。 您应该使用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预计的实例CDataProviderCActiveRecord::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()



文章来源: What is wrong with the statement,in Yii?