如何解决Laravel Scout - 分页急切加载
这是我的查询:
$results = Submission::search($query,function ($meilisearch,$query,$options) use ($request) {
$resultsFilter = '';
if ($subchan = $request->input('subchan')) {
$resultsFilter = appendToFilter($resultsFilter,'subchan = ' . $subchan);
}
if ($incl_nsfw = $request->input('incl_nsfw')) {
if ($incl_nsfw != 1) {
$resultsFilter = appendToFilter($resultsFilter,'nsfw != 1');
}
} else {
$resultsFilter = appendToFilter($resultsFilter,'nsfw != 1');
}
if ($time = $request->input('time')) {
$NowTimestamp = strtotime(Carbon\Carbon::Now());
$timeString = $time;
switch ($time) {
case "hour":
$resultsFilter = appendToFilter($resultsFilter,'created_at_ts > ' . $NowTimestamp - 3600);
break;
case "day":
$resultsFilter = appendToFilter($resultsFilter,'created_at_ts > ' . $NowTimestamp - 86400);
break;
case "week":
$resultsFilter = appendToFilter($resultsFilter,'created_at_ts > ' . $NowTimestamp - 604800);
break;
case "month":
$resultsFilter = appendToFilter($resultsFilter,'created_at_ts > ' . $NowTimestamp - 2592000);
break;
case "year":
$resultsFilter = appendToFilter($resultsFilter,'created_at_ts > ' . $NowTimestamp - 31536000);
break;
}
}
if ($resultsFilter != '') {
$options['filters'] = $resultsFilter;
}
return $meilisearch->search($query,$options);
})
->paginate(15)
->withQueryString();
但是由于这使用了 Scout 构建器,传统的预先加载关系是不可能的。作为参考,我正在使用 Meilisearch。
解决方法
想通了!它必须在查询之后完成,如下所示:
$results->load('owner','savedSubmissions');
与常规的急切加载相反,因为 Scout 使用自己的构建器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。