Laravel 5.2独特的where where子句不能按预期工作

时间:2016-06-15 17:04:51

标签: php mysql validation laravel-5.2

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

银行表中的列是:

  • ID
  • BUSINESS_NAME
  • ABI
  • 禁用
  • 删除
  • // laravel timestamps

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

各种帮助将不胜感激!

1 个答案:

答案 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'
]);