在雄辩的枢轴的额外专栏上加入第三个表格

时间:2015-06-29 07:00:48

标签: laravel eloquent pivot-table

我有三张桌子:

用户     id,name

顺序     id,日期

状态     id,name

并将数据透视表定义为:

order_user     order_id,status_id,user_id,created_at

所以" user_id "是枢轴中的额外列。

我的订单模型有:

public function statuses(){
    return $this->belongsToMany('Status')->withPivot('user_id')->withTimestamps(); 
    }

我可以通过以下方式访问用户ID

Order::find(1)->statuses->pivot->user_id

但无法确定如何获取用户" 名称"?

我可以以某种方式" LEFT JOIN"订单模型中的用户表"状态()"方法返回?

谢谢! ÿ

1 个答案:

答案 0 :(得分:0)

这是有效的解决方案(尽管我确信它可以以更优雅/雄辩的方式完成)

我将订单模型更新为:

public function statuses(){
    return $this->belongsToMany('Status')
        ->select(array('*','users.name as username'))
        ->join('users','order_user.user_id','=','users.id')
        ->withTimestamps();
    }

现在我可以:

foreach ($order->statuses as $status) { 
    echo "statusname: ".$status->name.
         "username:".$status->username;
    }

仍在寻找更好的解决方案,如果有的话......

问题:有没有人知道如何在我的JOIN子句中自动引用数据透视表? (而不是写作:" order_user")

BR ÿ