我有三张桌子:
用户 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"订单模型中的用户表"状态()"方法返回?谢谢! ÿ
答案 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 ÿ