You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并Laravel Eloquent验证规则与Rule::验证规则?

Laravel验证规则合并语法问题解决

你尝试合并管道式验证规则与Rule::unique规则时出现报错:

Method Illuminate\Validation\Validator::validateRequired|email does not exist.

错误代码示例:

public function rules()
{
    return [
        'email' => [
            'required|email:rfc,dns|min:5|max:75',
            Rule::unique('email_updates', 'email', 'product_uuid', 'affiliate_uuid')
        ],
    ];
}

单独使用管道式规则或Rule::unique规则均能正常运行,但合并时需注意数组形式的规则定义逻辑:数组中的每个元素必须是单个验证规则(字符串)或Rule实例,不能将多个管道规则打包成一个数组元素。

正确的合并写法

将管道式规则拆分为数组中的独立元素,与Rule::unique并列:

public function rules()
{
    return [
        'email' => [
            'required',
            'email:rfc,dns',
            'min:5',
            'max:75',
            Rule::unique('email_updates', 'email', 'product_uuid', 'affiliate_uuid')
        ],
    ];
}

原因说明

Laravel处理数组形式的验证规则时,会将每个数组元素当作单独的验证器方法调用。你之前的写法把整个管道串作为一个元素,Laravel会误认为这是一个名为required|email:rfc,dns|min:5|max:75的验证方法,而该方法不存在,因此触发报错。

内容的提问来源于stack exchange,提问作者wruckie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:45:36