0

任何人都可以让我夜以继日,我是 Yii 的新手。我有 3 张桌子

projects      (id,name,status,created_by)
users         (id,name)
project_users (id,project_id,user_id)

条件是:如果当前用户创建或当前用户是项目成员,则显示所有项目。我已经有一个工作代码。

    $criteria=new CDbCriteria;
    $criteria->join = ' LEFT JOIN project_users pu ON pu.project_id=t.id';
    $criteria->addCondition('created_by='.Yii::app()->user->id.' OR pu.user_id='.Yii::app()->user->id);
    $criteria->distinct = true;

    $dataProvider=new CActiveDataProvider('Project',
    array(
            'pagination'=>array('pageSize'=>15),
            'criteria'=> $criteria
        )
    );

但是,我想了解如何使用“WITH”(Yii 中的关系 AR 查询)获得相同的结果。我已经尝试过了,但都失败了。请帮忙谢谢。

4

1 回答 1

2

Project模型文件的关系

projectUsers' => array(self::HAS_MANY, 'ProjectUsers', array('id'=>'project_id')),

$dataprovider应该

$dataProvider=new CActiveDataProvider('Project',
        array(
                'pagination'=>array('pageSize'=>15),
                'criteria'=>array(
                    'with'=>array(
                        'projectUsers' => array('alias' => 'pu')
                    ),
                    'condition' => 't.created_by='.Yii::app()->user->id.' OR pu.user_id='.Yii::app()->user->id,
                    'distinct'=>true,
                    'together'=>true, 
                ),
            )
        );

看看我的照片。标准比这更强大,但您可以了解基本如何使用

在此处输入图像描述

小提示:如果一切都是新的,只需启用 Yii 日志以查看最终产生的查询,然后您可以自己解决问题。

于 2014-09-07T20:56:52.913 回答