2017-06-15 57 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