laravelで実行されるクエリをみたい
laravelでデータベースの更新をしたいときにモデルを書き換えてsave()を実行したが、変更がされないということがあり、長い時間をかけてようやく原因見つけることができました。 こちらのコードで実行されるSQLの内容を確認することができます。クエリとバインドされる値を確認したところ、where句で
id=nullとなっていました。なぜこのようなことになっていたかを確認したところ、laravelでmodelに$primaryKeyを指定しなければデフォルト値が
idとなることです。データベースのテーブルを見てみるとprimaryKeyがIDになっていました。別に使っていたところからデータベースを移行してきたので、カラム名が大文字のIDとなっていました。カラム名をidに治すか、$primaryKeyにIDを指定することで解決できそうです。
やったこと
modelの中身を出力
find()でモデルが正しく取得され、値の書き換えができているかを確認しました。こちらは正しく反映されていました。実際に実行されるクエリの確認
\DB::enableQueryLog();
$blogContent->save();
\Log::debug(\DB::getQueryLog());id=nullとなっていました。なぜこのようなことになっていたかを確認したところ、laravelでmodelに$primaryKeyを指定しなければデフォルト値が
idとなることです。データベースのテーブルを見てみるとprimaryKeyがIDになっていました。別に使っていたところからデータベースを移行してきたので、カラム名が大文字のIDとなっていました。カラム名をidに治すか、$primaryKeyにIDを指定することで解決できそうです。


ディスカッション
コメント一覧
まだ、コメントがありません