2

2 つのテーブルからデータを取得したい。そのために以下のコードを使用しました。私は Yii を初めて使用します。間違った方法で行っている場合は、正しい方法を提案してください。

コントローラーのコードは次のとおりです。

$dataProvider=new CActiveDataProvider('Users', array(
    'criteria'=>array(
        'with'=>'leave',
        'together'=>true,
        'condition'=>'leave.user_id=:user_id',
        'params'=>array(':user_id'=>$this->loadModel(Yii::app()->user->getId())->user_id),              
    ),
));

$this->render('admin',array(
    'dataProvider'=>$dataProvider,
));

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

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'users-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(       
        array(
            'header' => 'Leave Type',
            'name'=>'leave_type',
            'value'=>'$data->leave->leave_type',  
        ),      
        'employee_code',
        'username',
        'password', 
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));

私の問題は:

UserLeaveの 2 つのテーブルに参加しています。ユーザーテーブルだけでなく、 Leaveテーブルからもユーザーのデータを取得したいと考えています。上記のコードは、ユーザーテーブルのデータを表示します。Leaveテーブルのデータを表示しようとすると、次のエラーがスローされます。

非オブジェクトのプロパティを取得しようとしています

アップデート

これが私のユーザーモデルの関係です:

return array(
    'leaves' => array(self::HAS_MANY, 'Leaves', 'leave_id'),
    'creator' => array(self::BELONGS_TO, 'Users', 'created_by'),
    'updator' => array(self::BELONGS_TO, 'Users', 'modified_by'),   
    'leave' => array(self::HAS_MANY, 'Leaves', 'user_id'),  
);

ここに私の休暇モデルの関係があります:

return array(
    'user' => array(self::BELONGS_TO, 'Users', 'user_id'),
    'creator' => array(self::BELONGS_TO, 'Users', 'created_by'),
    'updator' => array(self::BELONGS_TO, 'Users', 'modified_by'),           
);
4

2 に答える 2