查询仅连接关系中的最后一行

时间:2018-08-01 12:40:50

标签: laravel eloquent

用户可以多次应用单个订单。最后一个是我想要的。我的代码:

$users = User::whereHas('applies', function ($query) use ($order_id){ $query->where('order_id', $order_id); })->with(['applies' => function($query) use ($order_id){ $query->orderBy('id', 'desc')->where('order_id', $order_id)->first(); }])->paginate($request->perPage);

此限制仅在最后一个用户中申请的数量,其他申请记录为空。从with()中删除first()将显示所有用户均适用。那个怎么样?请帮忙。

我尝试了limit(1),take(1)-> get(),take(1),但也失败了。

1 个答案:

答案 0 :(得分:1)

没有简单的方法来限制渴望的加载。

您可以使用HasOne关系:

public function latestApply() {
    return $this->hasOne(Apply::class)->orderBy('id', 'desc');
}

$users = User::whereHas('applies', function ($query) use ($order_id){
        $query->where('order_id', $order_id);
    })->with(['latestApply' => function($query) use ($order_id){
        $query->where('order_id', $order_id);
    }])->paginate($request->perPage);

这仍然会提取所有后台应用的内容,但只会为每个用户显示最新的内容。

另请参阅https://stackoverflow.com/a/50571322/4848587