2017-01-27 29 views
2

这里是我的Laravel 5.3项目的模型结构,寻子模型的hasMany关系雄辩


  • user.php的(型号)

它有一个邀请方法返回用户的邀请。

public function invitations() 
{ 
    return $this->hasMany('App\Invitation', 'invitee_id', 'id'); 
} 

  • Invitation.php (型号)

这种模式有,将返回的邀请的邀请方的细节的另一方法。

public function inviter() 
{ 
    return $this->hasOne('App\User', 'id', 'invited_by'); 
} 

如果我想找回它的工作原理当前用户的所有邀请,

\Auth::user()->invitations; 

但如果我尝试获取有关它不会工作邀请者的信息! (问题:如何做到这一点)

\Auth::user()->invitations->inviter; 

虽然我可以查询从这样的邀请雄辩对象的邀请,

\App\Invitation::first()->inviter; 

但是,当我尝试访问它,这是不工作从用户模型 - >邀请 - >邀请人! 我也可以在这里使用热切加载?

+0

是的,你可以在引用模型时使用':: with('user')'加载它们。当你调用'\ App \ Invitation :: first() - > inviter时,你会得到什么? – Ken

+0

@Ken'dd(\ App \ Invitation :: first() - > inviter);'return this:http://i.imgur.com/Yfc7szA.png – rakibtg

回答

1
\Auth::user()->invitations->inviter; 

望着这,似乎您试图检索邀请的集合的邀请属性。原因Ken's suggestion使用\App\Invitation::first()->inviter;工作是因为您正在检索只有一个邀请(在这种情况下,第一个)的邀请人。为了试图检索每一个属性之前通过你的邀请解决这个问题,循环:

$invitations = \Auth::user()->invitations; 

foreach ($invitations as $invitation) { 
    $inviter = $invitation->inviter; 
} 

也有具体an each() method到Laravel集合,让你遍历你的对象。