Php 拉维
我正在使用laravel时钟来监控我的查询 我的控制器里有Php 拉维,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我正在使用laravel时钟来监控我的查询 我的控制器里有 public function index(){ $errorFound = false; $error = ['error' => 'No Monitor Found']; $urls = $this->url->with('url_status','latestUrlStatus','users'); if (request()->has('q')) { $ke
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没有问题。所有这些查询都是预期的 第一个查询选择用户。。。不是来自您显示的代码。它来自委托代理 第二个查询select count来自$builder->count 其余所有查询都来自$URL->latest->paginate5。paginate做的第一件事是运行计数查询,第三个查询是获取记录总数。然后它继续调用真正的查询
在本例中,第四个查询是您对所有url的主查询,第五个查询是急切加载url\u状态关系的查询,第六个查询是急切加载最新状态关系的查询,第七个查询是急切加载用户关系的查询。没有问题。所有这些查询都是预期的 第一个查询选择用户。。。不是来自您显示的代码。它来自委托代理 第二个查询select count来自$builder->count 其余所有查询都来自$URL->latest->paginate5。paginate做的第一件事是运行计数查询,第三个查询是获取记录总数。然后它继续调用真正的查询
在本例中,第四个查询是对所有url的主查询,第五个查询是对急于加载url_状态关系的查询,第六个查询是对急于加载最新状态关系的查询,第七个查询是用于急切加载用户关系的查询。这是否正常,因为按“1”、“2”、“3”、“4”、“5”顺序在描述“%”处创建的url中选择count*作为聚合,并从url\u status中选择*作为聚合,其中url\u status.url\u id为twice@Beginner是的,这就是我在回答中解释的。第一个选择计数来自调用$builder->count,第二个选择计数来自paginate函数内部。第一个url\u状态查询来自于加载您的url\u状态关系。第二个url_状态查询来自于急切加载您的最新状态查询。这是否正常,因为在描述为“%”的url中选择count*作为聚合,并在描述为“%”的url_状态中选择*作为聚合,在描述处按“1”、“2”、“3”、“4”、“5”的顺序创建url_status.url_idtwice@Beginner是的,这就是我在回答中解释的。第一个选择计数来自调用$builder->count,第二个选择计数来自paginate函数内部。第一个url\u状态查询来自于加载您的url\u状态关系。第二个url_状态查询来自于加载您的最新状态查询。