雄辩的渴望加载双重关系

时间:2013-06-23 19:25:16

标签: laravel laravel-4 eloquent

这一直困扰着我,谷歌一直没有任何帮助。我有两个模型,舞蹈模型和作者模型。关系是作者可以有很多舞蹈。皱纹是这些物体之间实际上存在两种关系,因为原始作者和作者后来很久以来都认为重建舞蹈(毕竟这些是历史舞蹈)。对于使用普通外键的关系,我可以急切地使用load()函数加载,但是我无法找到如何急切加载使用不同命名的外键的关系。

如何对第二种关系进行急切加载?

2 个答案:

答案 0 :(得分:1)

在设置与不同外键的关系时,您必须在关系中指定要使用的键... return $this->hasOne('Author', 'foreign-key');

因此,如果我理解你的问题,你想在同一作者表中与两位作者建立关系......

那么也许这样的话呢? (用表格字段替换foreign_key

public function orig_author(){
 return $this->hasOne('Author');
}

public function second_author(){
 return $this->hasOne('Author', 'foreign-key');
}

public function dance(){
return $this->hasMany('Dance');
}

然后就这样检索它...... ($id being the id of your dance)

$dance = Dance::with('orig_author','second_author')->find($id);

但说实话,我从未尝试与桌子建立双重关系......让我知道它是否适合你。 :)我非常感兴趣。

答案 1 :(得分:0)

你可以这样做:

$dance = ModelName::query()
    ->with('eagerNameOne')
    ->with('eagerNameTwo')
    ->find($id);

仅添加 ::query() 的地方将所有 eagers 置于同一标识级别。