首页 > 代码库 > Yii的Relational Active Record三张表连接查询

Yii的Relational Active Record三张表连接查询

需求如下:
查询book表信息,同时关联entitystags表,以entitystags的字段eid关联book的主键,再关联查询tags表,以entitystags表的tid字段关联tags表的主键id
同时读出这三张表的信息来,在Yii可以如下处理,先在relations方法中声明三张表的关系,在控制器中,以with表明渴求式调用,即可,代码如下:
 
在book的model文件中声明关系:
public function relations(){    return array(        ‘entitystags‘=>array(self::HAS_MANY, ‘EntityStag‘, ‘eid‘, ‘alias‘=>‘estag‘, ‘select‘=>‘*‘),        ‘tags‘=>array(self::HAS_MANY, ‘Stag‘, ‘‘ , ‘alias‘=>‘stag‘ ,‘on‘=>‘estag.tid=stag.id‘ , ‘select‘=>‘title,id‘),    );}

 

控制器的调用:

$model=Book::model()->with("entitystags" , "tags")->findByPk($id);