我是一个处理laravel的新手,我陷入了困境
我有这种情况,我为了获得正确的关系而奋斗,我希望有人能给我一些启发性的想法:)
我有这两个模型:订单和用户。我有两种类型的用户。客户和专业人士。 当客户下订单时,它被分配给5名专业人员。
我创建了一个数据透视表' order_user',以便为每个订单处理所选专业人员。
哦,我不能将用户分成客户和专业人士,因为专业人士也可以充当客户,并从其他类型的专业人士那里订购服务。
这些是我认为我将添加到两个模型的关系代码(可能根本不起作用)
在我的用户模型上:
客户端用户订单
public function orders(){
return $this->hasMany('App\Orders');
}
专业用户分配了订单
public function assigned_orders(){
return $this->belongsToMany('App\Order', 'order_user', 'order_id', 'user_id');
}
在我的订单模型上:
订单创建者用户
public function user(){
return $this->belongsTo('App\User');
}
分配给该订单的用户
public function assigned_users(){
return $this->belongsToMany('App\User', 'order_user', 'order_id', 'user_id');
}
这有意义吗?
作为专业人士,我怎样才能检索我分配给的订单?
如果还有其他要点需要改变,请告诉我
首先感谢大家!
答案 0 :(得分:0)
我认为你可以简化你的设置 -
在您的用户模型中:
public function users(){
return $this->belongsToMany('App\User', 'order_user', 'order_id', 'user_id');
}
在订单模型中:
$my_orders = User::find(Auth::user()->id)->orders;
然后,您需要做的就是检索“您的”指定订单:
public function owner(){
// references owner_id
return $this->belongsTo('App\User');
}
如果您想在订单模型中保留“所有者”概念:
eager