6

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 子句?如果是这样怎么办?

4

1 回答 1

16

我原来的问题结束:

我可以将它们堆叠起来,否则我该如何编写验证?那么我可以添加“,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 在唯一规则中的作用的人,让我详细说明:

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

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

'name' => 'unique:users,email,1,id'
于 2013-10-15T09:31:18.757 回答