2017-09-16 80 views
2

我正在使用“唯一”关键字验证employee_id在控制器中的唯一用户,在我的数据库有列名为company_id,而添加新用户时,他们将设置我们一些company_id,当我添加我的公司员工ID的新用户对我公司本身而言将是唯一的,如果employee_id为另一家公司的4,并且我为公司必须接受4的公司,那么它只会检查该公司。Laravel唯一的关键字为特定的列

 $this->validate($request, 
     [ 
     'name'  => 'required', 
     'emp_id' => 'required|unique:users', (Here how can i check for particular company) 
     'email' => 'required|unique:users', 
     'role' => 'required', 
     ]); 

任何人都可以请帮我吗?

回答

2

您应该使用这里的数组语法并使用“自定义”唯一规则:

'emp_id' => [ "required", Rule::unique('users')->where(function ($query) use ($request) { 
    $query->where('emp_id', $request->emp_id)->where("company_id",$request->company_id); 
}) ] 

像这样的东西反正

+0

我很欣赏你的答案,只是想知道它是否与我给出的'emp_id'=>'required | unique:users,emp_id | unique:users,company_id','? – C2486

+0

不,'unique |:users,emp_id | unique:users,company_id'要求'emp_id'在用户的'emp_id'和'company_id'上是唯一的。这不太可能是需要的,因为'company_id'和'emp_id'不是同一种标识符。这个答案假设有第二个请求字段'$ request-> company_id',它也必须满足唯一条件(实际上'emp_id,company_id'必须是唯一的组合) – apokryfos

+0

你是对的:) – C2486

1

如果emp_idcompany_id是要求

'emp_id' => 'required|unique:users,emp_id|unique:users,company_id', 

入住文档:https://laravel.com/docs/master/validation#rule-unique

我认为emp_idcompany_id存在于users表,你是在请求发送

+0

我怎么能检查这个EMP_ID = '4' 出现在特定的company_id = '高科技' .. 'emp_id为'=> '需要|独特:用户,COMPANY_ID,$ COMPANY_ID' , – user7346035

+0

你发送的是'emp_id'还是'company_id',并存在于哪个表中的用户? – C2486

+0

我想检查company_id的emp_id。如果company_id ='tech'的emp_id ='4'已经存在于数据库中,我可以为company_id ='technology'添加emp_id ='4',但我无法为company_id ='4'添加emp_id ='4' '技术'和'技术'..你明白了吗? – user7346035