这是我的Laravel 5.3项目的模型结构,
它有一个邀请方法,可以返回用户的邀请。
public function invitations()
{
return $this->hasMany( 'App\Invitation', 'invitee_id', 'id' );
}
此模型还有另一种方法可以返回邀请的邀请者详细信息。
public function inviter()
{
return $this->hasOne( 'App\User', 'id', 'invited_by' );
}
如果我想检索当前用户的所有邀请,那么
\Auth::user()->invitations;
但如果我试图获取有关邀请者的信息,它就不会工作! (问题:怎么做?)
\Auth::user()->invitations->inviter;
虽然我可以从这样的邀请雄辩对象中查询邀请者,
\App\Invitation::first()->inviter;
但是当我尝试从用户模型访问它时,这不起作用 - >邀请 - >邀请! 我也可以在这里使用急切加载吗?
答案 0 :(得分:1)
\Auth::user()->invitations->inviter;
看着这一点,您似乎正在尝试从邀请的集合中检索邀请者属性。 Ken's suggestion使用\App\Invitation::first()->inviter;
的原因是因为您只检索了一个邀请的邀请者(在本例中是第一个)。要解决此问题,请在尝试检索每个邀请的属性之前遍历您的邀请:
$invitations = \Auth::user()->invitations;
foreach ($invitations as $invitation) {
$inviter = $invitation->inviter;
}
Laravel Collections还有an each() method专用于你的对象。