laravelで実行されるクエリをみたい

laravel, mysql, PHP, フレムワークlaravel, mysql, PHP

laravelでデータベースの更新をしたいときにモデルを書き換えてsave()を実行したが、変更がされないということがあり、長い時間をかけてようやく原因見つけることができました。

やったこと

modelの中身を出力

find()でモデルが正しく取得され、値の書き換えができているかを確認しました。こちらは正しく反映されていました。

実際に実行されるクエリの確認

\DB::enableQueryLog();
$blogContent->save();
\Log::debug(\DB::getQueryLog());
こちらのコードで実行されるSQLの内容を確認することができます。クエリとバインドされる値を確認したところ、where句で
id=nullとなっていました。なぜこのようなことになっていたかを確認したところ、laravelでmodelに$primaryKeyを指定しなければデフォルト値が
idとなることです。データベースのテーブルを見てみるとprimaryKeyがIDになっていました。別に使っていたところからデータベースを移行してきたので、カラム名が大文字のIDとなっていました。カラム名をidに治すか、$primaryKeyにIDを指定することで解決できそうです。