首页 文章

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

提问于
浏览
0

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

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

用户可以属于公司的位置 . 目前,我使用以下规则验证用户表中的用户名是否唯一:

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

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

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

它有效 .

现在我想验证用户名在公司内是唯一的 .

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

1 回答

  • 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
    

相关问题