我正在使用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'
]);