如何使用Laravel验证某些行的字段是否唯一?

时间:2013-08-05 15:36:45

标签: laravel laravel-4

我正在尝试验证具有以下结构的模型:

+------------+
| User       |
+------------+
| id         |
| username   |
| company_id |
+------------+

用户可以属于公司的位置。目前,我正在使用以下规则验证users表中的唯一用户名:

'username' => ["unique:users"]

编辑当前用户时,我想忽略当前行,我这样做是使用:

'username' => ["unique:users,username,10"]

它有效。

现在,我想验证用户名在公司中是唯一的

如何验证字段在某些行中是唯一的(其中company_id = some-id)?

1 个答案:

答案 0 :(得分:2)

虽然Laravel文档中没有记录,但可以通过添加将转换到where子句的额外参数来完成。

以下将按您的要求执行:

'username' => ["unique:users,username,10,id,company_id,31"]

它将被翻译成SQL语句,如下所示:

select 
  count(*) 
from 
  users 
where username   =  ?
  and id         <> 10
  and company_id =  31