获取数据透视表的值

时间:2017-06-15 19:37:04

标签: php laravel

我有以下设置:

|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,这是正确的。但我需要的是产品名称,代名和位置名称。

我如何阅读:结果:Frank Bananas中国

OR

我最好为枢轴表制作一个模型,并像普通模型那样拉动关系吗?

更新

我最终只是为数据透视表制作了一个模型,并使用

拉动关系
RepFinderPivot::with('repNames', 'repProducts', 'repLocation')

我原来的问题仍然有效,但现在可以使用了。

1 个答案:

答案 0 :(得分: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');
    }
}

不确定这是否有效,因为Product只有rep_id。