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