如何从 laravel 验证器的存在规则中获取现有数据库行?
How to get existing database row from exists-rule of a laravel validator?
如何获取使用 Validator
的 exists
规则找到的值?
$validator = Validator::make($request->all(), [
'invite' => 'required|max:30|exists:invites,code',
]);
我不想向数据库发出第二次请求,验证器已经完成了。
Invite::where('code', $value)
没有办法做到这一点。 exists
语句 returns 布尔值。这就是 exists
规则的作用。
在我看来,您可以在这里做的最好的事情是从验证器中删除 exists
规则,并在验证通过后立即查询邀请。如果是returnsnull
,则手动处理abort()
.
$validator = Validator::make($request->all(), [
'invite' => 'required|max:30',
]);
if ($validator->fails()) {
return redirect('some/route')
->withErrors($validator)
->withInput();
}
// now check for existance
else if (! $invite = Invite::where('code', $request->code)->first()) {
return abort(404, 'Invitation not found');
}
$invite->someMethod();
如何获取使用 Validator
的 exists
规则找到的值?
$validator = Validator::make($request->all(), [
'invite' => 'required|max:30|exists:invites,code',
]);
我不想向数据库发出第二次请求,验证器已经完成了。
Invite::where('code', $value)
没有办法做到这一点。 exists
语句 returns 布尔值。这就是 exists
规则的作用。
在我看来,您可以在这里做的最好的事情是从验证器中删除 exists
规则,并在验证通过后立即查询邀请。如果是returnsnull
,则手动处理abort()
.
$validator = Validator::make($request->all(), [
'invite' => 'required|max:30',
]);
if ($validator->fails()) {
return redirect('some/route')
->withErrors($validator)
->withInput();
}
// now check for existance
else if (! $invite = Invite::where('code', $request->code)->first()) {
return abort(404, 'Invitation not found');
}
$invite->someMethod();