Laravel 5 - Eloquent属于ToMany查询问题

时间:2016-08-26 21:45:53

标签: php laravel eloquent

我是一个处理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');
}

这有意义吗?

作为专业人士,我怎样才能检索我分配给的订单?

如果还有其他要点需要改变,请告诉我

首先感谢大家!

1 个答案:

答案 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