php - 拉维 4 : validation unique (database) multiple where clauses

标签 php sql validation laravel eloquent

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/

相关文章:

php - 在 Laravel Eloquent 中访问数据透视表 "3rd Model relationship"

php - 如何将字符串数组转换为 PHP 中的关联数组?

mysql - 更新/插入具有自定义年份和月份的随机日期范围 - MYSQL

python - 使用 Django 对唯一外键进行选择和排序

Java LocalDateTime解析

java - 使用 Java5 针对 XSD 进行验证时出现问题

java - 获取 Spring MVC 中 JSON 表单绑定(bind)错误的详细信息

php - 在 php 返回的值范围内只能访问第一个值

SQL 内连接与 For JSON 层次结构

javascript - 在 PhP 中运行 Javascript 函数或线程