Laravel中如何用whereNull同时校验多个字段为null?
在Laravel中实现批量whereNull的校验方案
你可以通过以下几种方式实现类似->whereNull(['field_x','field_y'])的批量字段null校验:
方法一:循环遍历字段数组
通过循环批量调用whereNull,代码简洁易维护,效果和链式调用多个whereNull完全一致:
$existsRule = Rule::exists('users', 'id'); foreach (['field_x', 'field_y'] as $field) { $existsRule->whereNull($field); } // 最终将$existsRule加入校验规则数组即可
方法二:使用where闭包构造批量null条件
利用where方法的数组参数形式,直接指定多个字段等于null,底层会自动处理为IS NULL条件:
Rule::exists('users', 'id') ->where(function ($query) { $query->where([ 'field_x' => null, 'field_y' => null, ]); })
补充说明
Laravel的whereNotNull方法原生支持数组参数是因为框架内部做了数组遍历处理,但whereNull目前没有实现这个逻辑,不过以上两种方法都能完美替代链式调用多个whereNull的写法,且扩展性更好——后续要新增字段只需修改数组即可。
内容的提问来源于stack exchange,提问作者MartinTTS
相关产品推荐
相关产品推荐

