Поиск значения в уже кэшированных данных из базы данных в laravel - PullRequest
2 голосов
/ 20 марта 2019

Я учусь делать кэширование, и, как я знаю,

if(cache::has('cacheKey')) {
    cache::get('cacheKey')
} else {
    $data=cache::remember('cacheKey',time,function() {
    return db::table('user')->get();});
    return $data; 
}

Теперь вопрос в том, когда я пытаюсь найти конкретные данные по ключу, а затем в результате разбить на страницы, что данные для этого я использовал Cache :: запомнить , но как сделать так быстро, когда я все время использую cache :: запомнить , когда я пытаюсь искать в ключе кеша, вот код

$page    = $req->has('page') ? $req->query('page') : 1;
$keyword = $req->keyword;

if(cache::has('FileData')) {
    if(!empty($keyword)) { 
        $file = cache::remember('FileData'.'search='.$keyword.'page='.$page,1440,function() use ($keyword) {
               return File::with('callcase','lettercase','update_table','fileimages')
                      ->where('id','Like','%'.$keyword.'%')
                      ->orWhere('file_name','Like','%'.$keyword.'%')
                      ->orWhere('recieved_by','Like','%'.$keyword.'%')
                      ->orWhere('processed_by','Like','%'.$keyword.'%')
                      ->orWhere('address','Like','%'.$keyword.'%')
                      ->orWhere('contact_no','Like','%'.$keyword.'%')
                      ->orWhere('show_status','Like','%'.$keyword.'%')
                      ->orWhere('Reopen','Like','%'.$keyword.'%')
                      ->orderBy('id','desc')
                      ->paginate(25)
                      ->setpath('');
                });

        $file->appends(['keyword'=>$keyword]);
        if(count($file)>0) {    
            return view('home')->with('files',$file) ;
        } else { 
            $error = "File does not found , Search another using keyword ";
            return view('home')->with('filemsg',$error);
        }
    } else {
            $file = cache::remember('FileData'.'page='.$page,1440,function () {
                    return File::with('callcase','lettercase','update_table','fileimages')
                           ->orderBy('id','desc')
                           ->paginate(25);});
                return view('home')->with('files',$file) ;
        }   
} else {
            $file = cache::remember('FileData',1440,function(){
                   return File::with('callcase','lettercase','update_table','fileimages')
                          ->orderBy('id','desc')
                          ->paginate(25);
            });
            return view('home')->with('files',$file);
}

Мой код работает нормально и возвращает данные так, как я хотел, но я запутался в этом, когда каждый раз, когда я запоминаю данные, как я могу сделать это быстрее, это будет быстрее, когда я получу данные из уже кэшированного ключа и произведу поискв них и разбивай их на страницы, как я могу это сделать и помочь мне, если я как-то поступаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...