Laravelで実行中のSQLを確認

2018/10/12

Laravel で DB を操作するとき、よくクエリービルダーを使ってクエリを発行します。

開発を進めていくにあって、実際に実行される SQL の内容を確認したいことってよくあります。

そんなときに利用するのが toSqlメソッド です。

今回は Laravel での SQL の確認の仕方についてエントリーします。

 

toSqlメソッドの使い方

例)「users」テーブルの "男性" のユーザー一覧を取得

クエリービルダーを使ってデータの一覧を取得するときはgetメソッドを使用していました。

$users = DB::table('users')
  ->where('gender', '男性')
  ->get();

このgetメソッドのかわりにtoSqlメソッドを使います。

$users = DB::table('users')
  ->where('gender', '男性')
  ->toSql();

最後に var_dump で出力します。

$users = DB::table('users')
  ->where('gender', '男性')
  ->toSql();
var_dump($users);
【 var_dumpについて解説 】

var_dump は変数の情報を表示する関数です。
配列やオブジェクトにも使用することができます。
エラーが起きても何が間違っているのか気付きにくいので、var_dumpを使ってエラーの箇所を探します。
var_dump は以下のように記述します。

var_dump(情報を出力する変数)

( )内には情報を表示したい変数/配列/オブジェクトを入力します。

配列の場合・・・要素数と添え字
オブジェクトの場合・・・オブジェクト内部の変数の数やそれぞれの変数に関する情報

 

Eloquent ORM

さきほどはDBファサードで記述しましたが、Eloquentでも同じです。

$users = User::where('gender', '男性')->toSql();
var_dump($uses);

 

チュートリアル

前回のチュートリアルではJOIN句を使ってDBを結合しました。

DBの操作について(JOIN句を使ってのテーブル結合)

今回はこのSQLの文を表示させてみます。

 

手順

1)コントローラの修正
2)ビューの修正
3)確認

 

1)コントローラの修正

1.->get() をコメントアウトをして ->toSql() を追加

2.ver_dumpで出力

class EmployeeController extends Controller
{
  //一覧
  public function select(){
  $employees = DB::table('employees')
     ->join('depts','employees.dept_id','=','depts.dept_id')
     //->get();

     ->toSql();
     var_dump($employees); //出力
  return view('employee.list')->with('employees',$employees);
  }
}
【 解説 】
一応、これでも確認できます。
ビューファイルではエラーになりますが、冒頭でSQL文が確認できます。

 

2)ビューの修正

気になる方はforeach の箇所(SQLの出力部分)をコメントアウトします。

<h3>SQL確認</h3>
<p style="color: tomato;">※クエリービルダーで作成したSQL文を表示</p>
{{--@foreach($employees as $employee)--}}
  {{--{{$employee->dept_name." ".$employee->name}}<br>--}}
  {{--{{$employee->dept->dept_name." ".$employee->name}}<br>--}}
{{--@endforeach--}}

 

3)確認

http://{ ホスト }/employee/list

LaravelによるSQLの確認は以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識