Yii-通过定义模型两个级别中的关系

Yii-通过定义模型两个级别中的关系,yii,relationship,Yii,Relationship,我想知道在一个模型中,是否可以通过两个表定义一个关系 我想从图片模型开始,得到相对位置模型 我有一个图片模型: id | event_id id | place_id id 我有以下事件模型: id | event_id id | place_id id 我有一个地点模型: id | event_id id | place_id id 我知道我可以这样做:$model->event->place 但我只是想知道这是否可能 我的目标是创建一个recursiveEncode方法,并

我想知道在一个模型中,是否可以通过两个表定义一个关系

我想从图片模型开始,得到相对位置模型

我有一个图片模型:

id | event_id
id | place_id
id
我有以下事件模型:

id | event_id
id | place_id
id
我有一个地点模型:

id | event_id
id | place_id
id
我知道我可以这样做:
$model->event->place

但我只是想知道这是否可能

我的目标是创建一个recursiveEncode方法,并传递关系中的“place”,以获得格式良好的JSON


谢谢

通过使用
with
to
关系,使用
Yii
尽可能简单。作为Yii的官方文件:

通过

获取相关数据时用作桥接的模型关系的名称。只能为HAS\u ONE和HAS\u MANY设置

字符串|数组,与此对象一起加载的子相关对象的列表。注意,这只适用于延迟加载,而不是急切加载

示例

    'author'=>array(self::BELONGS_TO, 'User', 'author_id'),
    'comments'=>array(self::HAS_MANY, 'Comment', 'post_id', 'with'=>'author')
然后,您可以使用
访问相关对象。例如
parent.child

类似这样的内容:

class Picture extends CActiveRecord {
...
    public function relations () {
        return array(
            'event' => array( self::BELONGS_TO, 'Event', 'event_id' ),
            'place' => array( self::BELONGS_TO, 'Place', array('place_id'=>'id'), 'through' => 'event' ),
        );
    }
...
}

完美的我不知道我自己使用的单词“through”是Yii中的一个关键词。很好用!对于其他人,要注意数组的顺序,好的语法是:'place_id'=>'id'