我正在使用laravel 5.2开发ERP
我需要这样做:

当用户尝试创建新银行时,程序将执行验证以检查给定的公司名称和给定的ABI代码是否唯一。执行验证后,程序将忽略已删除列中所有值为1的企业名称和ABI记录。

问题在于它完全忽略了我的where子句。
这是验证规则:

$this->validate($request, [
        'business_name'   => 'required|max:255|unique:banks,deleted,0',
        'abi'               => 'required|max:5|min:5|unique:banks,deleted,0'
    ]);


banks表中的列是:


ID
business_name
阿比
残障人士
已删除
// laravel时间戳


如果我没有误解Laravel 5.2的文档,这是在唯一过滤器中设置where子句的正确方法...?

各种帮助将不胜感激!

最佳答案

作为第三个参数传递的是主键的值,因此,由于您没有传递用于标识键的第四个参数,因此默认情况下,它会搜索带有id且值为0的记录。

因此,您需要以这种方式传递第四个参数,它将忽略所有具有已删除属性且值为1的行。

$this->validate($request, [
    'business_name'   => 'required|max:255|unique:banks,business_name,1,deleted',
    'abi'             => 'required|max:5|min:5|unique:banks,abi,1,deleted'
]);

09-25 18:08