2016-04-07 33 views
2
私はデータベース(:)かなり簡単)で(自動インクリメント)一意のIDを持っている、従業員がいるが、私は彼らのEMPLOYEE_NUMBERになり、他のフィールドの一意性をチェックしたいと思います

..Laravelのバリ - 整合性制約違反

新しい従業員を作成している間、私はちょうど呼んでいるので、それは、非常に簡単です:既存の従業員の編集中に

$this->validate($request, [     
          'employee_number' => 'required|unique:employees' 
          ]); 

しかし、どのように私はこれを行うことができますか?私は「編集された」EMPLOYEE_NUMBERはユーザーのための一意である場合(チェックしたいと思います...それは私がこの

を実行しようとしました

employee_number NOT IN (SELECT employee_number 
         FROM employees 
         WHERE id = *edited_user_id*) 

検証フォームlaravelするために、この問合せをリライトする必要があることを意味します

$this->validate($request, [     
          'employee_number' => 'required|unique:employees,id,'.$input['employee_id'] 
          ]); 

私はフランクのデータを変更しようとすると、レコードがテーブルにある「従業員」を

id | name | employee_number 
----------------------------- 
1 | Peter |  0001 
2 | Paul |  0002 
3 | Frank |  0003 

を想像して - >それは私が彼を変更してもOKです。..従業員番号はいくつかのユニークなものに従業員番号、それは正常に..

しかし、私はフランクのアカウントのために既存のものを挿入すると、0001それは私に従業員の番号が既に取られている(Validatorから)適切なエラーメッセージを与えません..しかし、その代わりに、それは

Whoops, looks like something went wrong. 

QueryException in Connection.php line 669: 
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0001' for key 'employees_employee_number' (SQL: *here comes the wrong sql query*) 

エラーページに私をリダイレクトしますが、私は右の私は、新しい従業員を挿入し、既存のIDを挿入しようとしようとしたときのようなフォームの上、適切なエラーバーを上げることができる方法を知っていますか?

答えて

3

'required|unique:employees,id,'.$input['employee_id']に小さな間違いをしました。 入力employee_numberemployeesテーブルで一意であるかどうかを調べるのは、idフィールドです。

この行を次のように変更してください。 'required|unique:employees,employee_number,'.$input['employee_id']あなたは行き​​たいです!

Lavarelから:unique:table,column,except,idColumn。 Validatorは

$rules = ['employee_number' => 

    'required|unique:employees,employee_number,'.$input['employee_id']] 

    $validator = \Validator::make($data = \Input::all(), $rules); 

      if ($validator->fails()) { 
       return [ 
        return [ 
         "status" => "fail", 
         "errors" => $validator->getMessageBag()->toArray() 
     ]; 
       ]; 
      } 

を示したように、私は今、あなたはあなたの要求を送信し、それに応答して、あなたが応じてそれを使用することができ、エラーメッセージの連想配列を取得する場所からの応答を収集し、エラーメッセージを収集失敗した場合

+0

maaaaaaan、あなたは私の救い主です:)私はあなたにビールを借りています! +1ありがとうございます –

1

あなたの使用に。

関連する問題