【问题标题】:Laravel Scout - pagination eager loadingLaravel Scout - 分页急切加载
【发布时间】:2021-09-10 05:36:55
【问题描述】:

如何使用 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。

【问题讨论】:

    标签: laravel laravel-scout meilisearch


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2023-04-03
      • 1970-01-01
      • 2011-05-23
      • 2014-08-13
      • 2021-04-23
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多