Просмотр SQL запросов в Laravel

При работе с построителем запросов иногда бывает нужно посмотреть, какой SQL запрос совершается к базе. Для этого есть различные способы.

Через Debugbar

Самый лучший способ - это установить панель debugbar и отслеживать запросы через нее. Для этого нужно перейти на вкладку Queries.

Через QueryLog

Перед запросом включаем лог запросов и сразу после запроса делаем дамп:

app/Http/Controllers/PostController.php<?php
  class PostController extends Controller
  {
    public function show()
    {
      DB::enableQueryLog();
      DB::table('posts')->where('id', '>', 5)->get();
      dump(DB::getQueryLog());
    }
  }
?>

Через toSql

Следующий способ также отобразит запрос, но без подставления переменных в условие запроса:

app/Http/Controllers/PostController.php<?php
  class PostController extends Controller
  {
    public function show()
    {
      $query = DB::table('posts')->where('id', '>', 5)->toSql();
      dump($query);
    }
  }
?>

Дамп

Можно посмотреть запрос через метод dd:

app/Http/Controllers/PostController.php<?php
  class PostController extends Controller
  {
    public function show()
    {
      DB::table('posts')->where('id', '>', 5)->dd();
    }
  }
?>

Можно также посмотреть запрос через метод dump:

app/Http/Controllers/PostController.php<?php
  class PostController extends Controller
  {
    public function show()
    {
      DB::table('posts')->where('id', '>', 5)->dump();
    }
  }
?>

Практические задачи

Задание 1

Дан следующий запрос:

php<?php
  DB::table('posts')->where('id', '!=', 3)->get();
?>

Посмотрите различными способами, какой SQL запрос выполняется на самом деле.

Задание 2

Определите, за какое время был выполнен приведенный запрос.