Generate The Raw MySQL Query From Laravel Query Builder

To print the raw sql query, try:

DB::enableQueryLog();
// Your query here
$queries = DB::getQueryLog();
print_r($queries);

Reference


Method 1

To print a single query, use toSql() method of laravel to get the query to be executed like

App\User::where('balance','>',0)->where(...)->toSql();

Method 2

Laravel can optionally log in memory all queries that have been run for the current request. But in some cases, such as when inserting a large number of rows, this can cause the application to use excess memory, so you should avoid this.

To enable the log, you may use the enableQueryLog method as

DB::connection()->enableQueryLog();

To get an array of the executed queries, you may use the getQueryLog method as

$queries = DB::getQueryLog();

you can get more details here Laravel Enable Query Log

Method 3

Another approach to display all queries used in Laravel without enabling the query log install the LaravelDebugBar from here Laravel Debug Bar. It is a package that allows you to quickly and easily keep tabs on your application during development.


you can add this function to your helpers

function getRealQuery($query, $dumpIt = false)
{
    $params = array_map(function ($item) {
        return "'{$item}'";
    }, $query->getBindings());
    $result = str_replace_array('\?', $params, $query->toSql());
    if ($dumpIt) {
        dd($result);
    }
    return $result;
}

and use like this:

getRealQuery(App\User::where('balance','>',0)->where(...),true)

use toSql() method of laravel to get the query to be executed like

App\User::where('balance','>',0)->where(...)->toSql();

But Laravel will not show you parameters in your query, because they are bound after preparation of the query. To get the bind parameters, use this

$query=App\User::where('balance','>',0)->where(...);
print_r($query->getBindings() );

enable the query log as DB::enableQueryLog() and then output to the screen the last queries ran you can use this,

dd(DB::getQueryLog());

Tags:

Mysql

Php

Laravel