2017-06-15 60 views
-2

我有以下設置:獲取的數據透視表的價值

|locations|products|reps| 

|id,name |id,name |id,name,phone,etc| 

我也創造了這個數據透視表(location_products_rep):

|location_id|products_id|rep_id| 

調用下面的代碼返回在數據透視表中的值

foreach ($reps->repNames as $rep) 
    { 
     echo $rep->pivot->rep_id; 
     echo $rep->pivot->product_id; 
     echo $rep->pivot->location_id; 
    } 

結果:1 1 1,這是正確的。但我需要的是產品名稱,代表名稱和位置名稱。

我將如何得到它改爲:結果:弗蘭克香蕉中國

OR

我是更好,以便爲支點TABEL模型,並拉的關係經過那裏像一個正常的模式會嗎?

UPDATE

我最終只是莊家對數據透視表的模型,並在該使用

RepFinderPivot::with('repNames', 'repProducts', 'repLocation') 

我原來的問題拉關係代表,但這個工程現在。

回答

0

在我看來,在您的模型上擴展belongsToMany關係並鏈接到->using(RelatedModel)在這種情況下對您會更好。因此,您不必處理中間表。

class Use extends Pivot 
{ 
    /** 
    * The users that belong to the role. 
    */ 
    public function reps() 
    { 
     return $this->belongsToMany('App\User')->using('App\Product'); 
    } 
} 

不確定這是否有效,因爲產品只有rep_id。

+0

我需要數據透視表,但不是嗎?例如,一位代表可能在中國爲產品「a」,但在中國不銷售產品「b」,但在中國的另一位代表銷售產品「b」而不是「a」。我認爲這樣的事情需要一個數據透視表。 – ATechGuy

+0

是的,我認爲你確實是對的,自從我發佈文檔以來,我一直在閱讀更多的文檔,看起來就是這樣。不過,我仍然認爲通過belongsToMany()鏈接可以獲得您所需的位置。 – btl