LoginSignup
26
10

More than 1 year has passed since last update.

【Laravel】SQLの確認は$query->dd()が便利

Last updated at Posted at 2022-12-24

こちらは Laravel Advent Calendar 2022 21日目の記事です。
遅ばせながらクリスマスイブの本日に投稿します!

検証環境

Laravel v8.83.8

$query->dd()は良いぞ

「Laravel SQL 確認」で検索すると下記の方法をよく見かけますが、

$query = User::where('id', 1);
dd($query->toSql(), $query->getBindings());

同じ処理を$queryから直接実行できます。

$query = User::where('id', 1);
$query->dd();

// 出力結果
// "select * from `users` where `id` = ?"
// array:1 [▼
//   0 => 1
// ]

公式サイトにも記述されています。

解説

dd()はクエリビルダのメソッドです。
Modelが作成するEloquentのビルダはクエリビルダのインスタンスを保有しており、そこからdd()を実行しています。

// in vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
public function dd()
{
    dd($this->toSql(), $this->getBindings());
}

気になる方はコアファイルを読んでみてください。

$query->dump()もできるよ

処理を止めたくない場合はdump()も利用できます。

$query = User::where('id', 1);
$query->dump();

// 出力結果
// "select * from `users` where `id` = ?"
// array:1 [▼
//   0 => 1
// ]
// in vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
public function dump()
{
    dump($this->toSql(), $this->getBindings());

    return $this;
}

どのバージョンから利用できるの?

v5.8より利用可能です。
v5.8のリリースノートに記述が無いため、当時のプルリクを参考に掲載します。

使うと開発効率がちょっぴり向上しますね。
皆さま素敵なクリスマスを!

26
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
10