laravel的唯一验证怎么过滤软删除的数据

臭大佬 2020-01-06 15:42:26 1890
php  laravel 
简介 laravel的唯一验证怎么过滤软删除的数据

问题

如果表用到软删除,在使用表单验证唯一的时候,如果该值存在,则无法过唯一。

栗子:

可以看到,domain值为www.2gdddl.com的记录,已经被软删除了,在添加的时候。

解决方法

方法一

Rule::unique('users')->where(function ($query) {
    $query->where('deleted_at', null)->where('id', '<>', $selfId);
})

栗子:

验证规则修改如下

 'domain' => [Rule::unique('hostpool_domainrules')->where(function ($query) {
                        $query->where('deleted_at', null);
})],

方法二

"unique:users,email_address,$selfId,id,deleted_at,NULL",

//表名,对应字段,本条记录id,id,deleted,null
//冒号后面6个空,前两个不用说,中间两个表示忽略id=$selfId,后面两个表示加上限定条件deleted_at=null

栗子 :

 'domain' => "unique:hostpool_domainrules,deleted_at,NULL",

添加: