2017-07-14 162 views
0

我有一個數據透視表連接(使用自定義的遷移)兩個表抓取所有條目:Laravel,雄辯:從多到許多關係

利息表:

ID | label 

Person表:

ID | label 

PersonH​​asInterest表(自定義遷移):

InterestID | PersonID | notes 

如何從數據透視表中獲取所有記錄(加入個人和興趣)?我不想獲得一個人或所有有興趣的人的所有興趣,但是數據透視表的所有條目(包含連接)。

+0

定義數據透視表的模型,然後調用'PersonH​​asInterest ::所有()' –

+0

,但怎麼可以?爲樞軸定義模型? –

+0

與模型相同,您可以指定表格屬性 –

回答

0

即使Pivot擴展Model,不可能叫上Pivot -object標準模型的功能。 Issue on Github

我想出了使用DB-Facade執行SELECT語句,就像這樣:

DB::table('person_has_interest') 
    ->join('interest', 'person_has_interest.interest_id', '=', 'interest.id') 
    ->join('person', 'person_has_interest.person_id', '=', 'person.id') 
    ->get(); // further manipulation like select possible 
0

嘗試這樣定義樞軸模式:

<?php 

... 
use Illuminate\Database\Eloquent\Relations\Pivot; 
... 
class PersonHasInterest extends Pivot 
{ 
    protected $table = '...'; // table name 
} 

然後使用它:PersonHasInterest::all();

+0

這是不可能的。你不能用這種方法實例化數據透視表。請參閱https://github.com/laravel/framework/issues/17770 –