缓存以避免验证器中的数据库调用:Laravel 5.2

时间:2015-12-18 09:17:00

标签: php laravel-5 laravel-5.1

我在做什么?

我以两种方式从数据库中获取记录。

方法1

在保存记录之前进行验证

$v = \Validator::make($request->all(), [
    'Category' => 'required|unique:tblcategory|max:25|min:5'
]);

if ($v->fails()) {
    return \Redirect::back()
                ->withErrors($v)
                ->withInput();
}

方法2

从数据库中提取记录

$Categories = \App\Models\Skill\Category_Model::all();

有什么问题?

在方法2中,我可以通过使用以下代码\Cache::put('Categories', $Categories, 60);

实现缓存来避免数据库调用

在方法1

的情况下,如何避免数据库调用

2 个答案:

答案 0 :(得分:1)

您可以检索类别。然后像这样使用它:

$cats = implode(',', $Categories);
$v = \Validator::make($request->all(), [
    'Category' => 'required|not_in:'.$cats.'|max:25|min:5'
]);

答案 1 :(得分:0)

您有验证规则unique:tblcategory。如果类别(我想,id)存在,unique rule将检查数据库。您无法真正进行验证,并希望不检查数据库。

缓存unique规则将是一种非常奇怪的方式,因为您真的不希望重复这些值,如果您缓存类别可能会发生这种情况。