用户可以多次申请单个订单。最后一个申请是我想要的。我的代码:
$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() 显示 all 适用于所有用户。那个怎么样?请帮忙。
我已经尝试过 limit(1)、take(1)->get()、take(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了解其他可能的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句