Laravel 表单验证:验证数据库记录是否存在 1 个改进

问题

我们怎样验证数据库记录是否存在呢?假设我们表单的提交字段为 email,如果数据库表 usersemail 字段中存在提交的数据,则验证不通过。

答案

我们可以使用 exists 验证方法进行处理。

request()->validate([
    'email' => 'exists:users,email',
]);

上面的验证规则表示如果 users表的 email字段存在对应的数据,则验证不通过。

有时,你可能需要指定要用于「exists」查询的特定数据库连接。你可以使用「点」语法将连接名称添加到表名称前来完成此操作:

'email' => 'exists:connection.users,email'

如果您想自定义验证规则执行的查询,您可以使用 Rule 类来流畅地定义规则。在下面的例子中,我们还以数组的形式指定验证规则,而不是使用 | 字符来分隔它们:

use Illuminate\Validation\Rule;

Validator::make($data, [
    'email' => [
        'required',
        Rule::exists('users')->where(function ($query) {
            $query->where('account_id', 1);
        }),
    ],
]);
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!