Php 关系()在Yii中,不理解书中的示例

Php 关系()在Yii中,不理解书中的示例,php,yii,yii-relations,Php,Yii,Yii Relations,2012年11月,我读了一本书《用Yii和PHP开发Pactpub Web应用程序》。面对这样的问题,我无法理解使用关系()背后的逻辑。以下是数据库中的图表表: 您需要在模型中插入代码: 发行模式: ... 'requester' => array(self::BELONGS_TO, 'User', 'requester_id'), 'owner' => array(self::BELONGS_TO, 'User', 'owner_id'), 'project' => arra

2012年11月,我读了一本书《用Yii和PHP开发Pactpub Web应用程序》。面对这样的问题,我无法理解使用关系()背后的逻辑。以下是数据库中的图表表:

您需要在模型中插入代码:

发行模式:

...
'requester' => array(self::BELONGS_TO, 'User', 'requester_id'),
'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
'project' => array(self::BELONGS_TO, 'Project', 'project_id'),
);
...
...
'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
...
项目模型:

...
'requester' => array(self::BELONGS_TO, 'User', 'requester_id'),
'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
'project' => array(self::BELONGS_TO, 'Project', 'project_id'),
);
...
...
'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
...
我不明白我们加了什么?如果模型问题了解一切,那么模型项目-我不理解我们正在添加。帮助理解

如果模型问题了解一切,那么模型项目-I 不明白我们正在添加

在某些情况下,您已经有了一个项目,并且希望找到该项目的所有问题和合作伙伴用户

$project = Project::model()->findByPK(1); // get project id=1

$issues = $project->issues; // get all of issues of project id=1, the result would be array
$users = $project->issues; // get all of users of project id=1, the result would be array

$project = Project::model()->with('issues', 'users')->findAll(); // get all of projects which has issue and user

//you have a user name ABC, and you want to find all of projects which contains a issue from owner has that user name.

$projects = Project::model()->with(array(
            'issues' => array(
                'alias' => 'issue',
                //'condition' => '',
                //'params' => array(),
                'with' => array(
                    'owner'=>array(
                        'alias' => 'user',
                        'condition' => 'username =:username',
                        'params' => array(':username'=>'ABC'),
                    )

                )
            ),

        ))->findAll();
有许多方法可以让您将它们与多种关系和条件混合在一起。上面的一个示例将生成一些我不想单独处理的大型SQL SELECT查询:)

数据库表图表:忘了书,读一下文档,它解释得很好。