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

Laravel中required_without和unique组合使用报isValid()调用null错误如何解决

触发原因
  • 核心问题是混用了Laravel的两种验证规则书写规范:Laravel支持「竖线分隔的字符串格式」和「单规则为独立元素的数组格式」两种写法,但两种格式不能在同一个规则配置里混用。
  • 你修改后的email规则中,将email:rfc和unique:customers用|拼接后作为数组的单个元素,Laravel会把整段email:rfc|unique:customers错误识别为email验证规则的入参,传给底层egulias邮件验证库后导致验证类初始化失败返回null,调用isValid()方法时就抛出了对应错误。
  • 当用户仅填写telephone字段时,email字段值为null,虽然配置了nullable规则,但因为规则解析逻辑已经出错,依然会触发无效的邮件校验流程,不会跳过验证。
解决方法

将拼接在一起的两个规则拆分为数组的两个独立元素即可,修改后的规则如下:

public static array $createValidationRules = [
        'email' => ['required_without:telephone', 'nullable', 'email:rfc', 'unique:customers'],
        'telephone' => ['required_without:email', 'nullable', 'numeric', 'regex:/^\d{5,15}$/'],
    ];

如果你偏好字符串格式的规则写法,也可以把整组email规则都改为竖线分隔的字符串,两种写法二选一即可:

'email' => 'required_without:telephone|nullable|email:rfc|unique:customers',

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:05