プログラミング PHP

【Laravel】SQLの確認はenableQueryLogを使う

投稿日:2019年8月29日 更新日:

SQLのデバッグのために、SQLとバインドされた値を確認したいことがあります。
その時に使える方法として、よく提示されるのは以下の2つです。

1.enableQueryLogメソッドとgetQueryLogメソッドを使う
クラス:Illuminate\Database\Connection
出力タイミング:クエリ実行後

2.toSqlメソッドとgetBindingsメソッドを使う
クラス:Illuminate\Database\Query\Bulder
出力タイミング:クエリ実行前

実行したSQLを見たいのであれば、
enableQueryLogメソッドとgetQueryLogメソッドの方が使いやすいと思います

toSqlメソッドとgetBindingsメソッドの場合、クエリ実行前でないといけません。
また、Modelのメソッドが以下のように書いてあると、ちょっとした書き直しが必要になったりと少々面倒なのです。

 

enableQueryLogメソッドとgetQueryLogメソッドの場合

実行前後に挟むだけでOKなので、デバッグし易いといえます。

出力画面


ちなみに、処理時間がミリ秒で表示されます。

 

toSqlメソッドとgetBindingsメソッドの場合

今回掲載したModelのメソッドの場合、
returnをさせずに、実行前にクエリを出力するよう修正するのでちょっと手間です。

出力画面


こちらはクエリ実行前なので処理時間は取得できません。
ただし、クエリ実行前に出力させたいということがあれば、こちらを使うしかありません。

 

まとめ

・enableQueryLogメソッドとgetQueryLogメソッドはクエリ実行前後に挟んで使えて便利。
 また、処理時間も表示できる。
・toSqlメソッドとgetBindingsメソッドはクエリ実行前である必要があれば使用する。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, PHP
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

prepareステートメントの挙動について調べてみた

調べるきっかけ PHPでSQLをセキュアに記述する方法としてprepareステートメントが推奨されているが、なぜなのかがわからず、挙動を調べれば自分なりに納得のいく答えがでるのではないかと思ったため。 …

Redmineでリンクにできない場合にチェックすること

リンクにできない場合のチェック項目 前後に文字列がくっついている。 前後に全角スペースがある。 リンクの#が全角になっている。   リンクにするには? 以下のルールで記述すればリンクにできま …

【Java】TDDして汎用的な部品を作成する(日付期間オブジェクト)

目的 TDDブートキャンプというセミナーに参加して面白かったので、 自分で何かやってみようと思った。 仕様 日付期間を保持するオブジェクトである。 開始日と終了日を持つ。 開始日と終了日を持つことをど …

【Bootstrap】一覧表示をデザインしよう!

概要 一覧表示をデザインします。 Bootstrapにはすぐに使える便利なクラスが用意されているので、それらを使用して実現します。 【SpringBootチュートリアル】#7~ 検索画面の作成に変更を …

【Java】Enumを使って変更に強いコーディングをする!

概要 仕事でコード値の判定が色んなところに散らばってしまった後に、コード値の定義を変更しなければいけなくなった状況が起こりました。 Enumで定義していれば変更箇所はEnum定義だけでよかったなぁ~と …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。