YII 关联表查询

AR模型中可以通过relations()方法建立关系

class B
public function relations() { return array( 'a'=>array(self::BELONGS_TO, 'A', 'id') ); }

这样一对一关系就建立好了。

$b = B::model()->find($criteria);
$a = $b->a;

第二步是利用一个lazyFinder重新查询结构赋值给$a;

四种关系:

关系定义例子
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()方法来申明关系;这个方法返回一个关系配置的数组;一个数组无素代表一个单独的关系,格式如下:

'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 实现关系的外键, 有可能有多个,即列名

refer:http://blog.csdn.net/yjj1s/article/details/6885276

原文地址:https://www.cnblogs.com/zaric/p/2614385.html