我有自定义代码,在这里验证手机确认码。
代码:
$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
门面?
你可以使用 关闭:
$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]');
}
},
],
]);