1

私は2つのテーブルを持っています:
userそして、 many_many関係を作るテーブルassetがありますuser_asset

CGridView でログインしているユーザーに関連するアセットのみを表示したい (user_idから来ますYii::app()->user->id)

それを可能にする基準をどう書くか?

4

2 に答える 2

2

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,
    ...
));

コードは例として提供されているため、必要に応じて調整する必要があります。

于 2013-01-04T14:25:13.840 に答える