ログログ

雑学エンジニアが学んだことの記録

プログラミング PHP Laravel

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

投稿日:

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, Laravel
-,

執筆者:


comment

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

CAPTCHA


関連記事

no image

PHPの開発環境の作り方

目次 前提準備構築XAMPPのインストールインストール開始64bit版OSの場合に表示される警告インストール開始コンポーネントの選択インストールパスの設定追加でインストール可能なWebアプリケーション …

no image

XSS対策の基本は入力値制限とサニタイジング(無害化)の2つ

XSS(クロスサイトスクリプティング)の基本的な対策は何をすればいいのかがぼんやりしている方向けの書いています。 対策方法はタイトルの通り、XSS(クロスサイトスクリプティング)対策の基本は入力値制限 …

no image

GitでIndexが壊れたときの直し方

これは自分の環境用の備忘録です。 (状況) Virtual BOX内のGit環境において、INDEXが0KBになっている。(INDEXが壊れている) (対処方法) リモート環境から新しくCloneして …

MySQL-タイムゾーン設定すると起動しなくなる原因と対処方法

MySQLのタイムゾーン設定をすると、XAMPPでMySQLが起動できなる原因と対処法です。   目次 原因XAMPP起動時に表示されるエラーメッセージ対処方法timezonesをダウンロー …

no image

【PHP】配列と連想配列と多次元配列の説明と使用例

目次 配列とは?定義例まとめ 配列とは? 1つの変数に複数の値を持つものです。 整数型や文字列型は1つの変数に1つの値を持ちますが、配列は同じようなデータの集まりを1つの変数に持つことができるようにな …