【问题标题】:Laravel 5 - Eloquent belongsToMany query issueLaravel 5 - Eloquent belongsToMany 查询问题
【发布时间】:2016-08-27 06:02:28
【问题描述】:

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

这有意义吗?

作为专业人士,我如何检索分配给我的订单?

如果还有其他需要更改的地方,请告诉我

提前谢谢大家!

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    我认为您可以简化一些设置 --

    在您的用户模型中:

    public function orders(){
        return $this->belongsToMany('App\Order', 'order_user', 'order_id', 'user_id');
    }
    

    在您的订单模型中:

    public function users(){
        return $this->belongsToMany('App\User', 'order_user', 'order_id', 'user_id');
    }
    

    那么您需要做的就是检索“您的”分配的订单:

    $my_orders = User::find(Auth::user()->id)->orders;
    

    如果您想在您的 Order 模型中保留“所有者”概念:

    public function owner(){
        // references owner_id
        return $this->belongsTo('App\User');
    }
    

    【讨论】:

    • 感谢 Samsquanch 的快速回答,但它仍然无法正常工作...... :( 当我是客户检索我下的订单时,我可以轻松检索所有订单。澄清一下:来自下订单的客户的 user_id 存储为 Order 模型上的属性 user_id。存储在数据透视表 order_user 上的唯一用户数据是分配给订单的专业人员的 id。这些是我仍然无法检索...它仍然给我一个空数组,尽管 order_user 表已正确填写...但无论如何感谢您的支持:)
    • 哇,我可以从用户模型中检索更改assigned_orders函数的数据: public function assigned_orders(){ return $this->belongsToMany('App\Order');刚刚摆脱了它上面的数据透视表信息......可能是一个愚蠢的新手问题,但为什么它阻止我获取数据?再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多