Laravel Scout - 分页急切加载

问题描述

如何使用 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 构建器,传统的预先加载关系是不可能的。作为参考,我正在使用 Meil​​isearch。

解决方法

想通了!它必须在查询之后完成,如下所示:

$results->load('owner','savedSubmissions');

与常规的急切加载相反,因为 Scout 使用自己的构建器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...