1. ホーム
  2. php

[解決済み] Laravelで実行されたクエリを取得する 3/4

2022-04-14 16:45:12

質問

Laravel 3/4でLaravel Query BuilderやEloquent ORMを使って実行されたSQLクエリの生データを取得するにはどうしたらいいですか?

例えば、このようなものです。

DB::table('users')->where_status(1)->get();

または

(posts (id, user_id, ...))

User::find(1)->posts->get();

その他、最低限、実行されたすべてのクエリをlaravel.logに保存するにはどうしたらよいでしょうか。

解決方法は?

Laravel 4+

<ブロッククオート

Laravel 5をお使いの方への注意事項です。 を呼び出す必要があります。 DB::enableQueryLog() クエリを実行する前に クエリを実行する行のすぐ上か、ミドルウェアの中か、どちらかです。

Laravel 4 以降では、このような場合に限って DB::getQueryLog() を実行すると、すべての実行されたクエリを取得できます。

$queries = DB::getQueryLog();
$last_query = end($queries);

または、プロファイラパッケージをダウンロードすることもできます。私がお勧めするのは barryvdh/laravel-debugbar これはかなりいい感じです。インストール方法については、彼らの レポジトリ .


Laravel 3

Laravel3では、最後に実行されたクエリを Eloquent モデルは静的メソッド last_query を使用します。 DB クラスがあります。

DB::last_query();

ただし、この場合は profiler オプションで application/config/database.php . あるいは、@dualed が言ったように profiler オプションで application/config/application.php を呼び出すか DB::profile() を実行すると、現在のリクエストで実行されたすべてのクエリとその実行時間を取得できます。