1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelのEloquentで実行SQLをプレースホルダの値を埋め込んで生SQLにして確認したい

Last updated at Posted at 2021-07-02

はじめに

こんにちは。昨日、高校の頃の友人にVBAわかると聞かれて、書いたことも見たこともないですが、相談に乗りました。意外とできるもんですね、筆者です :v:

さて今回は、私が業務で使用している便利な古(いにしえ)のコードを紹介します。
ぜひご活用くださいませ :smile:

経緯

実装している際に、MySQL Workbench等でDBに繋いで生SQL叩いて確認するケースが結構あります。

それをコードに落とし込む場合や、バグ等で期待しているものが表示されていな場合などの調査の際に、プログラムで実行されているSQLを確認するケースなどもあります。

その際に、生のSQLで出力して、コピペしてMySQL Workbench等に貼り付けて実行するためには、プレースホルダの値も埋め込む必要があります。

そんなときにこれ!

LaravelのEloquentで実行SQLをプレースホルダの値を埋め込んで生SQLで確認したい

これです↓

$stmt->get();
$sql = preg_replace_array('/\?/', $stmt->getBindings(), $stmt->toSql());
dd($sql);

解説

SQL実行後、実行SQLを取得し、?の部分をプレースホルダの値で置き換えているだけです。
あとはddなどで出力すればOK!

おわりに

これすごい便利なのでぜひ使ってください :smile:
それでは!

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?