我正在使用laravel 5.2开发ERP 我需要这样做:
当用户尝试创建新银行时,程序将执行验证以检查给定的公司名称和给定的ABI代码是否唯一。执行验证后,对于商家名称和ABI,程序将忽略 已删除 列中值 1 的所有记录。
问题在于它完全忽略了我的where子句。 这是验证规则:
$this->validate($request, [
'business_name' => 'required|max:255|unique:banks,deleted,0',
'abi' => 'required|max:5|min:5|unique:banks,deleted,0'
]);
银行表中的列是:
如果我没有误解Laravel 5.2的文档,这是在唯一过滤器中设置where子句的正确方法......?
各种帮助将不胜感激!
答案 0 :(得分:1)
作为第三个参数传递的内容是主键的值,因此当您没有传递标识该键的第四个参数时,它会搜索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'
]);