try-catch
ブロックにデータベース操作をラップしてエラーをキャッチし、エラーが発生したときに何か他の操作をします。古い入力データをエラーメッセージとともにリダイレクトする可能性があります。
duplicate entryのエラーコードはです。したがって、1062がエラーコードとして取得された場合、このデータは重複エントリです。ここに、この例外をキャッチするためのコードがあります。
try {
$data = Model::create(array(
'templateURL' => 'some value ',
));
} catch (Illuminate\Database\QueryException $e) {
$errorCode = $e->errorInfo[1];
if($errorCode == 1062){
// we have a duplicate entry problem
}
}
また、例外を自分で処理したくない場合は、Laravel Validatorの助けを借りてください。あなたのビューテンプレートに
// validation rules
$rules = array(
'templateURL' => 'unique:YourTableNameHere'
);
$validator = Validator::make(Input::all(), $rules);
// check if the validation failed
if ($validator->fails()) {
// get the error messages from the validator
$messages = $validator->messages();
// redirect user back to the form with the errors from the validator
return Redirect::to('form')
->withErrors($validator);
} else {
// validation successful
$data = Model::create(array(
'templateURL' => 'some value ',
));
}
次に、あなたのコントローラで次のようにあなたは$errors
変数を経由して、エラーメッセージにアクセスすることができます。 バリデーションについてもっと学ぶhttps://laravel.com/docs/5.3/validation
このhttps://scotch.io/tutorials/laravel-form-validation – shoieb0101
@ shoieb0101あなたは '$ rules'を使っていることを意味していますか?良い見えますが、私は私のコントローラにこれを置くことができます私は彼のように私のルートに入れなければならないのですか? – user5638730
あなたの検証ルールをあなたのコントローラに入れたり、検証のためにformRequestを使うことができます。 https://laravel.com/docs/5.2/validation#form-request-validation – shoieb0101