Yii1.1中的关联查询
2016-01-08 15:40
645 查看
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_ONE是HAS_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;*/
}
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_ONE是HAS_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;*/
}
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料