我如何渴望加载 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。