tp6 多字段唯一验证踩过的坑

4 篇文章 0 订阅

近期在使用tp6框架的多字段唯一验证器的时候遇到了总是不生效的问题,花了半天时间,查网上资料没解决,看底层源码才发现原因,所以发出来避免一些小白踩坑,大神绕过。
先来看一下官方规则:
// 多个字段验证唯一验证条件
‘name’ => ‘unique:user,status^account’,
验证器:

<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class Vali extends Validate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = [ 'product_id' => "unique:product,product_id^brand_id",//同一品牌下产品id唯一 'user_login' => 'unique:users',//用户名唯一 ]; /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * * @var array */ protected $message = [ 'user_login' => '用户名必须唯一', 'product_id' => '产品ID必须唯一', ]; } 调用: use app\validate\Vali; use think\exception\ValidateException; try { $result = validate(Vali::class)->check([ 'product_id' => $product_id,//同一品牌下产品id唯一, 'brand_id' => $brand_id,//同一品牌下产品id唯一, ]); } catch (ValidateException $e) { // 验证失败 输出错误信息 $this->error('产品ID已存在!'); } 不生效的原因是因为在调用的时候一定要把多字段验证的几个字段的值传进去。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值