Laravel Excel导入时如何为exists验证规则添加company_id范围限定
解决方案
你可以使用Laravel自带的Rule::exists验证类给exists规则追加自定义查询条件,无需自己写额外的校验逻辑,修改步骤如下:
- 先在验证规则所在的文件顶部引入Rule类:
use Illuminate\Validation\Rule;
- 把原有的字符串形式的employee_code验证规则改为数组格式,追加company_id的条件校验:
'employee_code' => [ 'required', Rule::exists('employee_information', 'code') ->where('company_id', auth()->user()->company_id) ],
规则说明
上述规则的校验逻辑为:仅当employee_information表中同时满足code = 导入的employee_code、company_id = 当前登录用户所属公司ID两个条件的记录存在时,才会校验通过,完全匹配你的需求。
以你给出的示例场景测试:当前登录用户company_id=1,导入的employee_code=2时,对应记录的company_id=2,查询不到匹配记录,就会自动抛出exists验证错误。
可选优化:自定义错误提示
如果需要修改默认的验证错误提示,可以在对应的验证规则配置处添加自定义消息:
// 以Laravel Excel导入类的配置为例 public function messages(): array { return [ 'employee_code.exists' => '导入的员工编码不属于当前公司,请检查后重新导入', ]; }
内容的提问来源于stack exchange,提问作者kgcusi
相关产品推荐
相关产品推荐

