📅  最后修改于: 2023-12-03 14:53:23.918000             🧑  作者: Mango
在 Laravel 中,如果需要验证某个字段的值是否符合指定的规则,可以使用 Validator。但是,有时候我们需要在某个条件成立的情况下才进行验证,比如只有某个字段存在时才需要验证。在这种情况下,我们可以使用 sometimes
方法。
sometimes
方法sometimes
方法用于在类似于条件验证场景下的验证。该方法接受两个参数:
如果第一个参数的值存在,则将第二个参数所指定的验证规则或回调函数应用于该字段。
以下是 sometimes
方法的语法:
$sometimes = $request->validate([
'email' => 'sometimes|required|email',
]);
在上面的例子中,email
字段只有在存在时才会进行验证。验证规则中的 sometimes
关键字告诉 Validator 只有在条件成立时才应用该验证规则。
有时候,我们需要在数据库中验证某个字段的值,比如检查一个唯一的电子邮件地址是否已经存在于数据库中。在这种情况下,我们可以使用 unique
和 exists
验证规则。
unique
验证规则unique
验证规则用于确保某个字段的值在数据库表中是唯一的。使用 unique
验证规则时,需要指定要检查的数据表和字段。
例如,以下代码片段验证 $email
字段是否唯一:
$validator = Validator::make($request->all(), [
'email' => 'unique:users,email',
]);
如果 $email
字段的值在 users
表中已经存在,则验证将失败。
exists
验证规则exists
验证规则用于确保某个字段的值在数据库表中存在。使用 exists
验证规则时,需要指定要检查的数据表和字段。
例如,以下代码片段验证 $user_id
字段是否存在于 users
表中:
$validator = Validator::make($request->all(), [
'user_id' => 'exists:users,id',
]);
如果 $user_id
字段的值在 users
表中不存在,则验证将失败。
以下示例展示了如何验证某个字段是否存在以及如何在数据库中验证。
$validator = Validator::make($request->all(), [
'name' => 'sometimes|required|min:3|max:50',
'email' => 'sometimes|required|email|unique:users,email',
'user_id' => 'sometimes|required|exists:users,id',
]);
在上面的示例中,我们使用 sometimes
规则检查 name
、email
和 user_id
字段是否存在,并分别验证它们是否符合指定的规则。email
字段使用了 unique
规则,以确保它在 users
表中是唯一的。user_id
字段使用了 exists
规则,以确保它存在于 users
表中。