yii CGridView仅显示登录用户';s在多个关系中的记录

yii CGridView仅显示登录用户';s在多个关系中的记录,yii,Yii,我有两个表:user和asset,还有一个user\u-asset表,它建立了许多关系 现在我只想在CGridView中显示与登录用户相关的资产(user\u id来自Yii::app()->user->id) 如何编写使之成为可能的标准?1)您需要在两个模型中定义您的关系 用户: 资产: 'users' => array(self::MANY_MANY, 'Asset', 'user_asset(asset_id, user_id)'), 2) 您创建的数据提供程序将仅获取所需的数据(

我有两个表:
user
asset
,还有一个
user\u-asset
表,它建立了许多关系

现在我只想在CGridView中显示与登录用户相关的资产(
user\u id
来自
Yii::app()->user->id

如何编写使之成为可能的标准?

1)您需要在两个模型中定义您的关系

用户:

资产:

'users' => array(self::MANY_MANY, 'Asset', 'user_asset(asset_id, user_id)'),
2) 您创建的数据提供程序将仅获取所需的数据(在模型(最佳)或控制器bu中定义,而不在视图中):

3) 您为您的CGridView提供了良好的提供商:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    ...
));

代码是作为示例给出的,您应该根据自己的需要进行调整

我成功了,在模型类的搜索方法中添加了以下内容:

    $criteria->with=array(
      'users'  
    );
    $criteria->together = true;
    $criteria->condition = "users_users.user_id='".Yii::app()->user->id."'";
。。。在CActiveDataProvider声明中:

'criteria'=>array(
    'with' => 'users',
    'together'=>true,
    'condition'=>'users_users.user_id = '.Yii::app()->user->id,
),

也许不是最好的方法,但做了需要做的事
users\u users
是Yii提供的sql表别名,我从错误消息中得到一个提示:)

您是否在模型类中的表之间设置了关系?是的,存在关系-用户模型中的“assets”和资产模型中的“users”它在
id=…
上给了我sql错误,更改为
t.id=…
,错误消失,但仍无法按预期工作。答案就在我的答案里。
    $criteria->with=array(
      'users'  
    );
    $criteria->together = true;
    $criteria->condition = "users_users.user_id='".Yii::app()->user->id."'";
'criteria'=>array(
    'with' => 'users',
    'together'=>true,
    'condition'=>'users_users.user_id = '.Yii::app()->user->id,
),