1

这个一直困扰着我,谷歌没有任何帮助。我有两个模型,一个舞蹈模型和一个作者模型。关系是一个作者可以有很多舞蹈。皱纹是这些对象之间实际上有两种关系,因为有原作者和后来被认为重建舞蹈的作者(毕竟这些是历史舞蹈)。我可以预先加载load()使用普通外键的关系的函数,但我不知道如何预先加载使用不同名称外键的关系。

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

4

2 回答 2

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);

但老实说,我从来没有尝试过与一张桌子建立双重关系......让我知道它是否适合你。:) 我很感兴趣。

于 2013-06-23T19:30:25.353 回答
0

你可以这样做:

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

::query()仅添加了 tu 将所有渴望置于相同的身份级别。

于 2021-04-26T14:36:37.257 回答