小编典典

laravel 4:验证唯一(数据库)多个where子句

sql

laravel 4文档提到了唯一的字段验证。他们在这里说明了如何在唯一验证中包含where子句。唯一表的单个WHERE子句,例如:

$validator = Validator::make(
    array(
        'name' => 'John Doe'
    ),
    array(
        'name' => 'unique:table,field,NULL,id,field1,value1'
    )
);

现在,我假设这样做是这样的:

"SELECT id FROM table WHERE field = 'John Doe' AND field1 = value1 LIMIT 1"

然后检查此查询是否返回结果,如果没有通过验证器。

所以我想知道是否有一种方法可以添加更多的where子句?如果是这样怎么办?


阅读 199

收藏
2021-04-07

共1个答案

小编典典

我的原始问题的结尾:

我可以将它们叠放吗?如果没有,我该如何写我的确认书?所以我可以只添加“,field2,value2,field3,value3”等。像这样堆叠它们?

回答

是的,我可以像下面那样堆叠它们。因此,如果我想向我的唯一验证器添加多个where子句,我将这样做:

'name' => 'unique:table,field,NULL,id,field1,value1,field2,value2,field3,value3'

例外情况

根据Laravel文档,唯一规则中给出的第三个参数是except参数。

unique:table,column,except,idColumn

我将此参数保留为NULL,因为它与原始问题无关。对于那些想知道此NULL的功能在唯一规则内的用户,让我详细说明一下:

else参数强制唯一规则忽略给定的ID。因此,将其指定为NULL将导致检查每条记录(即忽略任何内容)。

例如:
假设我们希望我们的用户电子邮件是唯一的,但我们的管理员用户可能也具有具有相同电子邮件的普通用户帐户。假设我们的管理员用户是我们创建的第一个用户,其id为1。因此,在创建新用户时我们可以做的是:

'name' => 'unique:users,email,1,id'
2021-04-07