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子句?如果是这样怎么办?
我的原始问题的结尾:
我可以将它们叠放吗?如果没有,我该如何写我的确认书?所以我可以只添加“,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'