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


Cache to Avoid Database calls in validator : Laravel 5.2

我在做什么

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

方法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的情况下如何避免数据库调用

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

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

您有一个验证器规则unique:tblcategoryunique规则将检查数据库中是否存在类别(我想是id)。你不可能真的有这样的验证,并期望它不检查数据库。

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