まずはtry~catch
MySQLのエラーを捕まえるためにtry~catch
で囲ってあげる
ここで使用するExceptionはQueryException
use Illuminate\Database\QueryException;
try {
// DB処理
} catch (QueryException $e) {
// dd ($e);
}
試しにエラーを起こしてみる
デバッグするためにエラー起こしてみる
ここでは、適当なユーザーの存在しないカラム (emailXXX
) を更新しようとしてる
try {
$user = auth()->user();
$user->update([
'emailXXX' => 'test@test.com'
]);
} catch (QueryException $e) {
dd ($e);
}
dd()
で吐き出された内容 ↓
どうやら、$e->code
にはSQLSTATEが格納されていて、
エラーコードはerrorInfo[1]
に格納されているみたい
SQLSTATEもerrorInfo[0]
で取得できるのでまとめて配列から取得してあげればOK
use Illuminate\Database\QueryException;
try {
// DB処理
} catch (QueryException $e) {
dd($e->errorInfo[0]); // SQLSTATE
dd($e->errorInfo[1]); // エラーコード
}
Laravelプロジェクトにて、ログの吐き出しやエラーメッセージの表示の際にエラーコードたちが必要だったのでメモ