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',
),
),
));
私の問題は:
UserとLeaveの 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'),
);