2017-01-27 31 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集合,讓你遍歷你的對象。