Yii1.1中的关联查询

Yii1权威指南在讲述关系型活动记录时,给出了下图的数据表关系。首先以Yii 框架的方式对表之间的关系进行分析。

post表与user 表是 BELONGS_TO关系:post表中的每一条记录只有一个author_id属性,通过这个autho_id,在user表中可以找到唯一的用户。在现实中的含义是,每一个帖子,都属于唯一一个用户;用户(作者)发表一篇贴子以后,我们通过该帖子的author_id属性,就可以找到这个帖子的作者。也就是说,post天生是属于用户的。在数据库中,post 表有一个外键author_id与user表的主键id对应。

    user表与profile表是HAS_ONE关系:user表中的每一条记录最多有一个profile记录与之对应。在现实中的含义是,每个用户的个人简介最多只有一条,有可能没有。个人简介中的头像和个人主页都只有一个副本。在数据库中,profile表的owner_id既是主键也是指向user表的外键。

    user表与post表是HAS_MANY关系:user表中的每一条记录有多个post记录与之对应。每个用户可以有多个帖子。

HAS_ONEHAS_MANY的特例。

假设post,user,profile,category几个ActiveRecord模型中的relation都已经依照权威指南正确定义。我们可以以如下方式处理数据库查询。

渴求式加载:

将username为'cyz'的帖子的信息以数组的形式返回,以post id作为数组索引。

$condition = 'username  = :username';

$posts=Post::model()->with('author',category)

->findAll(array('condition' =>$condition, 

'params' => array('username' => 'cyz'),

'index' => 'id'

));

foreach($posts as $key => $post) {

/*获取帖子的用户名 $post->author->username;*/

/*获取帖子的标题 $post->title;*/

}


你可能感兴趣的:(PHP)