文档章节

yii 模型relations查询

别人说我名字很长
 别人说我名字很长
发布于 2014/01/02 21:14
字数 418
阅读 87
收藏 0

申明关系

两张表之间的关系无非三种:一对多;一对一;多对多; 在AR中,定义了四种关系:

关系 定义 例子
BELONGS_TO A和B的关系是一对多,那么B属于A Post属于User
HAS_MANY A和B之间的关系是一对多,那么A有多个B User有多个Post
HAS_ONE 这是HAS_MANY的一种特殊情况,A至多有一个B User至多有一个Profile
MANY_MANY 这个对应多对多的情况,在AR里会将多对多以BELONGS_TO和HAS_MANY的组合来解释 Post和Category

在AR中通过重写CActiveRecord类的relations()方法来申明关系;这个方法返回一个关系配置的数组;一个数组无素代表一个单独的关系,格式如下:

在AR中通过重写CActiveRecord类的relations()方法来申明关系;这个方法返回一个关系配置的数组;一个数组无素代表一个单独的关系,格式如下:

'VarName'=>array('RelationType','ClassName','ForeignKey', ...additional options)

Var Name 关系名
Relation Type 四种关系:self::BELONGS_TO, self::HAS_ONE, self::HAS_MANY, self::MANY_MANY
Class Name 代表当前AR类要关联的那个AR类名
Foreign Key 实现关系的外键, 有可能有多个,即列名

下面的代码表示用来定义Post, User之间的关系

class Post extends CActiveRecord
{
    ......
 
    public function relations()
    {
        return array(
            'author'=>array(self::BELONGS_TO, 'User', 'author_id'),
            'categories'=>array(self::MANY_MANY, 'Category',
                'tbl_post_category(post_id, category_id)'),
        );
    }
}
 
class User extends CActiveRecord
{
    ......
 
    public function relations()
    {
        return array(
            'posts'=>array(self::HAS_MANY, 'Post', 'author_id'),
            'profile'=>array(self::HAS_ONE, 'Profile', 'owner_id'),
        );
    }
}



使用时,如果$author代表一个USER的AR实例,可以使用$author->posts来获取到它相关的所有的Post对象。

© 著作权归作者所有

共有 人打赏支持
别人说我名字很长
粉丝 56
博文 258
码字总数 108335
作品 0
济南
程序员
私信 提问
Yii框架多表查询(一对一与多对一)

在网上查过了很多yii框架多表查询的问题,但总没有适合自己的,自己建了几张表过来分析,把操作写出来分享Yii框架多表查询(一对一与多对一)给大家 查一对一或多对一(常使用到的就是文章和文章分...

李佳顺
2014/04/10
0
0
Yii Framework 1.1.9 发布啦

2012年第一天,Yii PHP framework 1.1.9已经发布了 We are very pleased to announce the immediate availability of Yii Framework version 1.1.9. In this release, we've included nearl......

chinaphp
2012/01/01
1K
2
php的yii框架relations使用方法

两个表,user和message,user表的主键uid和message表中的uid关联。使用yii框架,在messageController下如何使用relations查询出user表中的username这一属性。 message.php中的relations方法如...

liliian
2014/03/16
878
1
Yii框架官方指南系列26——使用数据库:关系型 Active Record

我们已经了解了怎样使用 Active Record (AR) 从单个数据表中获取数据。 在本节中,我们讲解怎样使用 AR 连接多个相关数据表并取回关联(join)后的数据集。 为了使用关系型 AR,我们建议在需...

水露露
2014/03/21
0
0
YII关联查询relations里的together是如何使用的

YII中的relations里有一个together参数,百度说'together'=>false, 设置这一项,关联查新将被分为几个SQL语句执行,和性能有关系,但是我还是不知道什么意思,大神们能不能简单的解释一下呢,...

专业填坑
2016/02/17
716
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
43分钟前
0
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部