📌  相关文章
📜  如果行存在,则验证规则 laravel - PHP (1)

📅  最后修改于: 2023-12-03 14:53:23.918000             🧑  作者: Mango

如果行存在,则验证规则 - Laravel

在 Laravel 中,如果需要验证某个字段的值是否符合指定的规则,可以使用 Validator。但是,有时候我们需要在某个条件成立的情况下才进行验证,比如只有某个字段存在时才需要验证。在这种情况下,我们可以使用 sometimes 方法。

sometimes 方法

sometimes 方法用于在类似于条件验证场景下的验证。该方法接受两个参数:

  1. 字段名:需要验证的字段名。
  2. 规则或回调函数:要应用于该字段的验证规则或回调函数。

如果第一个参数的值存在,则将第二个参数所指定的验证规则或回调函数应用于该字段。

以下是 sometimes 方法的语法:

$sometimes = $request->validate([
    'email' => 'sometimes|required|email',
]);

在上面的例子中,email 字段只有在存在时才会进行验证。验证规则中的 sometimes 关键字告诉 Validator 只有在条件成立时才应用该验证规则。

在数据库中验证

有时候,我们需要在数据库中验证某个字段的值,比如检查一个唯一的电子邮件地址是否已经存在于数据库中。在这种情况下,我们可以使用 uniqueexists 验证规则。

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 规则检查 nameemailuser_id 字段是否存在,并分别验证它们是否符合指定的规则。email 字段使用了 unique 规则,以确保它在 users 表中是唯一的。user_id 字段使用了 exists 规则,以确保它存在于 users 表中。