首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii CActiveDataProvider关系

Yii CActiveDataProvider关系
EN

Stack Overflow用户
提问于 2014-09-08 02:04:24
回答 1查看 1.2K关注 0票数 0

任何人都可以激励我,我是Yii的新手。我有三张桌子

代码语言:javascript
复制
projects      (id,name,status,created_by)
users         (id,name)
project_users (id,project_id,user_id)

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

代码语言:javascript
复制
    $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查询)获得相同的结果。我已经试过了,但都失败了。请帮帮忙谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-08 04:56:53

Project模型文件中的关系

代码语言:javascript
复制
projectUsers' => array(self::HAS_MANY, 'ProjectUsers', array('id'=>'project_id')),

$dataprovider应该是

代码语言:javascript
复制
$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查看最终生成的查询,然后你可以自己解决这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25713234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档