laravel
  • laravel-5
  • entity-relationship
  • 2016-03-05 127 views 0 likes 
    0

    我有一個用戶表和一個組表。 我建立了多對多的用戶/組關係。 當我運行Laravel獲取所有相關型號的多個型號

    $users = User::where("id",'=',6)->first()->groups; 
    

    ,我得到正確的組。

    但我會遇到我的查詢將在一個用戶陣列中的情況。 如何獲得所有使用laravel關係的用戶的所有組?

    回答

    3

    eMAD的建議不起作用,因爲Laravel只允許在對象上執行關係函數而不在對象數組上執行。你想要的harvey是一個叫做急切加載的概念。

    $users = User::whereIn('id', [6, 7, 8])->with('groups')->get(); 
    

    使用此代碼,您將可以在代碼中訪問$user->groups->someInfo。快樂編碼

    +0

    你能用英文告訴我,功能在做什麼? 它是否仍然利用我在組和用戶模型中定義的關係? –

    +0

    我還有一個與此相關的問題。 我也有一個名爲ACTION的表,其中有一個名爲VOTE的表,有許多關係。現在,VOTE表在名爲子項的表上具有一對多的關係。 是否有可能爲一組給定的操作獲取所有投票行及其子項行? –

    +1

    當您使用User :: findOrFail(1)時,它僅加載用戶模型,而不加載與其相關的其他模型。要加載所有模型,可以使用with('parameter')方法加載相關模型。 with函數的參數在模型類中聲明的函數的名稱就像您猜測的一樣。其實你可以連鎖加載甚至遙遠的相關模型。例如:User :: with('groups.Members')。這可以讓你調用$ user-> groups-> members,假設組模型可以與成員模型相關聯。希望你能得到它 – alaboudi

    相關問題