How do I get the query builder to output its raw SQL query as a string?

eloquent, laravel, laravel-query-builder, php, sql

Solution

To output to the screen the last queries ran you can use this:

\DB::enableQueryLog(); // Enable query log

// Your Eloquent query executed by using get()

dd(\DB::getQueryLog()); // Show results of log

I believe the most recent queries will be at the bottom of the array.

You will have something like that:

array(1) {
  [0]=>
  array(3) {
    ["query"]=>
    string(21) "select * from "users""
    ["bindings"]=>
    array(0) {
    }
    ["time"]=>
    string(4) "0.92"
  }
}

(Thanks to Joshua's comment below.)

Problem

Given the following code: ``` DB::table('users')->get(); ``` I want to get the raw SQL query string that the database query builder above will generate. In this example, it would be `SELECT * FROM users`. How do I do this?

Original source

Related problems