thinkphp3.2.3 自动验证 unique 出错的解决办法

本文针对ThinkPHP3中修改数据时,出现唯一性验证错误的问题进行详细解析。文章提供了六种排查方法,帮助开发者解决name字段修改时提示已存在的错误。

场景:修改数据时,唯一验证name字段出错,提示已存在。

排查:

  1.传入的参数是否包含主键,因为 D('模型名')->create() 会自动判断是否是新增或者修改,根据传入的参数判断是否包含主键,如果包含主键则认为修改。

  2.修改请求是否是post类型,因为D('模型名')->create() 自动检查post参数,如果不是post,请传入 D('模型名')->create($data).  $data是你包含主键[id]和要修改的数据内容

  3.如果主键[id]是通过url请求过来的[get],那么如果使用官方的 getData() 方法获取数据则有可能获取不到主键,建议直接接收post,主键再添加进入 $post['id'] = I('get.id')

  4.检查自己设定验证时间是否正确,1 新增 2 修改 3 全部验证,[这里一定是填写3],因为如果是修改,tp3不会验证本条数据,只是判断其他数据行是否存在相同数据

  5.是否在模型内设置 protected $insertFields protected $updateFields  , 如果包含主键id或其他需要的字段名,自动验证过后则会踢出不包含给定字段的其他数据

  6.检查自己代码,变量等等是否编写正确,请求url是否编写正确

总结:

  细心,多看文档,多百度.

  

    

转载于:https://www.cnblogs.com/xiaqiuchu/p/10603615.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值