TP5.0.21版本的验证器类进行字段名的值唯一性检查时怎么加上软删除资料?

浏览:502 发布日期:2018/12/03 分类:求助交流 关键字: TP5验证器类
TP5.0.21版本的验证器类进行字段名唯一性检查时怎么加上软删除资料?

如题,默认的验证器如果进行字段名的值验证唯一性时,是不会检查软删除里的资料,那么问题就来了?如果新注册账号AA通过了验证器类在软删除了旧账号AA之后写入数据库的,但是后来系统又在回收站中恢复账号AA的时候,这样不就跟后来新注册的账号AA冲突重复了吗?



我今天使用验证器类的时候,使用了:unique:table,field 功能进行字段名的值检查唯一性时束手无策,因为不想在C层又单独新增一个包括软删除资料的查询是否唯一性。如果是这样,那验证器类就发挥不了应有的作用了。



完全手册-内置规则-其它验证:

'name' => 'unique:user',(完全手册默认的不检测 delete_time 软删除的资料)

我建议改进的增加的判断条件如下:

'name' => 'unique:user(true)',(后面加true参数时,强制去检测delete_time 软删除的资料,有效的排查恢复软删除资料后的唯一性冲突。)


只是个人小建议而已,虽然在验证器类之前用查询表的方法可以检验,但是又得去读取一次数据库,降低了效率啊!希望能改进一下,提高验证器的效率。

目前我是用这个方法暂时解决的.$data = UserModel::withTrashed()->where(['user'=>input('post.user')])->find();  // 检查条件包含软删除里的资料
if ($data!==null){$this->error('账号已存在 (检查包括回收站)');unset($data);} // 
各位大师有什么好的方法,谢谢分享给小弟学习啊!

最佳答案
评论( 相关
后面还有条评论,点击查看>>