任何人都可以让我感到高兴,我是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查询)。我已经尝试但都失败了。请帮助谢谢。
答案 0 :(得分: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,
),
)
);
看看我的照片。标准比这更强大,但你可以理解基本上如何使用
小提示:如果您发现新内容,只需enable Yii log查看最终生成的查询,那么您可以自行解决问题。