【问题标题】:How to use cache to store query results in Laravel?Laravel 中如何使用缓存来存储查询结果?
【发布时间】:2022-07-26 02:33:39
【问题描述】:

您好,我已经尝试将此查询返回缓存几个小时,但没有成功。

        $data = $query->groupBy('visits.images_id')
    ->orderByRaw('COUNT(visits.images_id) desc')
    ->select('images.*')
    ->paginate($settings->result_request)->onEachSide(1);

    return $data;

我知道它可以以某种方式工作,但我仍然是 php 的初学者,不知道如何编写代码。

Cache::remember

谁能帮帮我?我真的很感激能不时找到可以为我的 laravel 应用程序编程以换取金钱的人。祝大家有美好的一天,提前感谢你们!

【问题讨论】:

    标签: laravel caching laravel-6


    【解决方案1】:
        $data = cache()->remember('data', now()->addMinutes(<minutes_to_remember_the_cache_for>), function () {
    return $query->groupBy('visits.images_id')
        ->orderByRaw('COUNT(visits.images_id) desc')
        ->select('images.*')
        ->paginate($settings->result_request)->onEachSide(1);
    });
    

    这应该可以解决问题...

    【讨论】:

    • 很遗憾没有:(
    【解决方案2】:

    您很可能希望缓存 get 结果。

    
    // This would become your query builder. There's no need to cache this
    // as this is just a builder.
     $builder = $query->groupBy('visits.images_id')
        ->orderByRaw('COUNT(visits.images_id) desc')
        ->select('images.*');
    
    dd($builder); // To see the SQL
    

    接下来,我将创建一个存储库。

    namespace App\Repositories;
    
    use Illuminate\Database\Eloquent\Builder;
    
    class QueryRepository
    {
    
      public function paginate(Builder $builder, $extraParams, string $key)
      {
          return cache()->remember($key, 'SOME-SECONDS', function() use($builder, $extraParams) {
              return $builder->paginate($extraParams)->onEachSide(1);
          });
      }
    
    }
    

    用法:

    
    use App\Repositories\QueryRepository;
    
    $repository = new QueryRepository;
    
    $extraParams = $settings->result_request;
    $data = $repository->paginate($builder, $extraParams, 'UNIQUE-KEY-THAT-SHAPES-THIS-QUERY');
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-17
      • 2021-10-11
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2017-03-02
      相关资源
      最近更新 更多