【问题标题】:Laravel - load relationship for multiple ordersLaravel - 多个订单的加载关系
【发布时间】:2018-04-15 12:14:41
【问题描述】:

我有一个问题。我有很多订单(我是通过 Eloquent 查询完成的),在我的模型中我也有关系:用户。我的代码如下所示:

$orders = Order::query();
$orders = $orders->whereIn(order.id , $arrayWithIds)->get();

现在我想为每个订单都设置他的用户名。这是这样的关系:

public function user()
{
    return $this->hasOne(Users::class, 'id', 'user_id');
}

在获取订单之前,是否有可能与所有人建立关系 order->user? 我知道当我有一个这样的订单时我可以做到这一点:

$orderUser = $order->user

但是当我有很多订单时,我不能这样做。我写了关于属性的文章——也许这是唯一的方法?但我想知道或者我只能通过关系来做到这一点?

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案1】:

    你应该像这样使用急切加载:

    $orders = $orders->whereIn('order.id' , $arrayWithIds)->with('user')->get();
    

    【讨论】:

      【解决方案2】:

      您在此处尝试执行的操作称为“急切加载”,Laravel 提供了一个 with 方法来实现此目的:

      $orders = Order::query();
      $orders = $orders->whereIn(order.id , $arrayWithIds)->with('user')->get();
      

      你可以在这里找到更多关于 Laravel 预加载的信息:https://laravel.com/docs/5.5/eloquent-relationships#eager-loading

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-19
        • 1970-01-01
        • 2016-05-31
        • 2014-02-24
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 2021-12-01
        相关资源
        最近更新 更多