gpt4 book ai didi

php - 在 Laravel 中使用用户过滤器缓存数据(不仅如此)

转载 作者:行者123 更新时间:2023-12-05 08:54:32 25 4
gpt4 key购买 nike

Laravel 5.5 + Redis。

在 Controller 中得到如下代码:

$products = Cache::remember('category_'.$category->alias.'_page_'.$page, 1440, function() use ($childrenCategoriesIndexes){
return Product::whereIn('category_id', $childrenCategoriesIndexes)
->userFilter()
->paginate(15);
});

它缓存每个页面。但是如果自定义过滤器太多怎么办?这是来自 Product 模型的 scopeUserFilter():

public function scopeUserFilter($query) {
if (request('price_from')) {
$query->where('price', '>', request('price_from'));
}
if (request('price_to')) {
$query->where('price', '<', request('price_to'));
}
return $query;
}

而且只有 2 个变量。但是如果会有10个或者更多的变量,这个数据怎么缓存呢?我认为这样的键不好:

'category_'.$category->alias.'_page_'.$page.'_'.request('price_from').'_'.request('price_to')

最佳答案

散列参数,然后你可以包含尽可能多的参数:

$params = [
'page' => 1,
'price_from' => '',
'price_to' => '',
'param0' => '',
...
];
foreach (array_keys($params) as $param) {
if (request()->has($param))
$params[$param] = request()->input($param);
}
$prefix = 'category_';
$hashed = md5(json_encode($params));
$cache_key = $prefix . $hashed;

关于php - 在 Laravel 中使用用户过滤器缓存数据(不仅如此),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49459592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com