Laravel - 多个订单的负载关系

时间:2017-11-02 20:44:30

标签: laravel eloquent relationship

我有一个问题。我有很多命令(我已经通过Eloquent查询完成了这个)并且在我的模型中我也有关系:user。我的代码如下所示:

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

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

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

是否有可能在获取订单之前为所有人提供关系订单 - >用户? 我知道当我有这样一个订单时我可以这样做:

$orderUser = $order->user

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您在这里尝试做的事情被称为"渴望加载",并且Laravel为此目的提供了一种方法:

.height-fix{height:650px}

您可以在此处找到有关Laravel热切加载的更多信息:https://laravel.com/docs/5.5/eloquent-relationships#eager-loading