如何使用laravel规则比较表中请求字符串和最后插入的行。

问题描述 投票:0回答:1

我有自定义代码,在这里验证手机确认码。

代码:

$validator = Validator::make($request, [
    'confirm_code' => [
        'required',
        Rule::exists('confirm_codes')->where(function($query) use($request) {
            $query->where('phone', $request->phone)
                  ->where('confirm_code', $request->confirm_code)
        })
    ]
]);

这个验证有效,但检查现有的任何确认码,手机等于请求手机。但是,我需要检查请求确认码与 最后的 通过以下方式输入确认码 日期confirm_codes 表中的电话等于请求电话。

试过了。

Rule::exists('confirm_codes')->where(function($query) use($request) {
    $query->where('phone', $request->phone)
          ->where('confirm_code', $request->confirm_code)
          ->orderBy('created_at', 'desc');                          // added this line <--
})

但这个方案行不通 我如何能做到像这样的验证,使用 Rule 门面?

php laravel validation laravel-5.8
1个回答
0
投票

你可以使用 关闭:

$validator = Validator::make($request, [
    'confirm_code' => [
        'required',
        function ($attribute, $value, $fail) {

            $latest = DB::table('confirm_codes')->latest()->first();

            if ($request->phone === $latest->phone && $value === $latest->confirm_code) {
                $fail('[enter your error message here]');
            }

        },
    ],
]);
© www.soinside.com 2019 - 2024. All rights reserved.