我正在使用laravel发条来监视我的查询
我的控制器中有
public function index(){
$errorFound = false;
$error = ['error' => 'No Monitor Found'];
$urls = $this->url->with('url_status','latestUrlStatus','users');
if (request()->has('q')) {
$keyword = '%'.request()->get('q').'%';
$builder = $urls->where('description', 'like', $keyword);
$builder->count() ? $urls = $builder : $errorFound = true;
}
return $errorFound === false ? UrlsResource::collection($urls->latest()->paginate(5)->appends(request()->query())) : $error;
}
在我的laravel发条上 查询翻倍
正常吗?如果有问题我该如何解决? TIA
答案 0 :(得分:2)
没问题。所有这些查询都是预期的。
第一个查询(选择用户...)不是来自您显示的代码。它来自TrustProxies。
第二个查询(选择count())来自$builder->count()
。
其余所有查询均来自$urls->latest()->paginate(5)
。 paginate()
要做的第一件事是运行count()
查询(第三查询)以获取记录总数。然后继续调用真正的查询。
在这种情况下,第四个查询是您所有URL的主要查询,第五个查询是渴望加载您的url_status
关系的查询,第六个查询是渴望加载您的{{1} }关系,第七个查询是渴望加载您的latestUrlStatus
关系的查询。