2017-09-16 21 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