【问题标题】:How to select a specific Model from a Join Query in Laravel如何从 Laravel 的联接查询中选择特定模型
【发布时间】:2016-09-03 19:54:49
【问题描述】:

我有 3 个模型

  • user
  • helper
  • order

user 使用 多对多 helper_user 数据透视表连接到 helper,并使用 多对多 连接到 orders > order_user 数据透视表。

我可以轻松选择helpersusers by

class Helper extends Model {
...
    public function users() {
        return $this->belongsToMany('App\User')
    }
...
}

我可以很容易地选择userorders by

class User extends Model {
...
    public function orders() {
        return $this->hasMany('App\Order');
    }
...
}

但是如何选择helperorders呢?

我试过了:

class Helper extends Model {
...
    public function orders() {
        return $this->users()->join('orders', 'users.id', '=', 'orders.user_id')->select('orders.*');
    }
...
}

这会返回orders,但他们的类是App\User

【问题讨论】:

  • helperorder 通过 user 表连接。不知道你如何定义这种关系。但是您可以使用 foreach 循环轻松获取 helper's order'sforeach($helper->users as $user) $helpers_orders[] = $user->orders->toArray();.

标签: mysql laravel laravel-5 eloquent


【解决方案1】:

不需要在辅助模型中为与订单的关系定义方法。您可以使用dot syntax 获取订单。

$usersOrders = App\Helper::with('users.orders')->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2023-03-14
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多