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'
异常(exception)情况
根据Laravel documentation,unique 规则中给出的第三个参数是except 参数。 .
unique:table,column,except,idColumn
我将此参数保留为 NULL,因为它与原始问题无关。对于那些想知道这个NULL在unique规则中有什么作用的人,让我详细说明一下:
except 参数强制唯一规则忽略给定的 ID。因此将其指定为 NULL 将导致检查每条记录(即忽略任何内容)。
例如:假设我们希望我们的用户电子邮件是唯一的,但我们的管理员用户可能也有一个普通用户帐户和相同的电子邮件。假设我们的管理员用户是我们创建的第一个用户,它的 ID 为 1。那么在创建新用户时我们可以做的是:
'name' => 'unique:users,email,1,id'
关于php - 拉维 4 : validation unique (database) multiple where clauses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19377069/