私は2つのテーブルを持っています:
user
そして、 many_many関係を作るテーブルasset
がありますuser_asset
CGridView でログインしているユーザーに関連するアセットのみを表示したい (user_id
から来ますYii::app()->user->id
)
それを可能にする基準をどう書くか?
私は2つのテーブルを持っています:
user
そして、 many_many関係を作るテーブルasset
がありますuser_asset
CGridView でログインしているユーザーに関連するアセットのみを表示したい (user_id
から来ますYii::app()->user->id
)
それを可能にする基準をどう書くか?
1)両方のモデルで関係を定義する必要があります
ユーザー:
'assets' => array(self::MANY_MANY, 'Asset', 'user_asset(user_id, asset_id)'),
資産:
'users' => array(self::MANY_MANY, 'Asset', 'user_asset(asset_id, user_id)'),
2) 必要なデータのみを取得する dataProvider を作成します (ビューではなく、モデル (最適) またはコントローラーで定義します)。
$dataProvider=new CActiveDataProvider('Asset', array(
'criteria'=>array(
'with'=>array(
'users'=>array(
'condition' => 'id = ' . Yii::app()->user->id
),
),
),
...
));
3) CGridView に適切なプロバイダーを提供します。
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
...
));
コードは例として提供されているため、必要に応じて調整する必要があります。