【发布时间】:2020-05-06 05:03:55
【问题描述】:
我收到了一个 api 请求,其中有一个参数是 projectname。问题是,当我搜索例如 A 时,结果将是 A,但是当我搜索 B 时,即使我搜索 C,结果仍然是 A,结果仍然是相同的。我认为缓存保存了第一个搜索字符串的第一个结果。我的问题是如何保存每个搜索查询中的每个结果,而不会根据搜索查询获得相同的结果?
这是我的代码
public function getRecordDetails(Request $request){
if(!empty($request->limit)){
$limit = " LIMIT ".$_REQUEST['limit'];
}
else{
$limit= '';
}
if(empty($request->projectname)){
dd('Field is empty');
}
else{
$data = Cache::rememberForever('results', function () use($request) {
$result = DB::connection('mysql2')
->table('xp_pn_ura_transactions')
->whereRaw(DB::raw("CONCAT(block, ' ', street,' ',project_name,' ', postal_code,'')LIKE '%$request->projectname%' order by STR_TO_DATE(sale_date, '%d-%M-%Y') desc"))
->limit($request->limit)
->distinct()
->get();
$count = DB::connection('mysql2')
->table('xp_pn_ura_transactions')
->whereRaw(DB::raw("CONCAT(block, ' ', street,' ',project_name,' ', postal_code,'')LIKE '%$request->projectname%'"))
->count();
return json_encode(array('count'=>$count,'result'=>$result));
});
return $data;
}
}
PS:这个问题是基于这里How could I cache every api response results in my query in Laravel?我在这里回答的,但根据我的回答这是不同的问题。感谢您的帮助。
【问题讨论】: