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