Семь "трюков" с dd() в Laravel
dd()
. Я покажу различные творческие способы использования dd()
в наших приложениях.1. dd()
в Коллекциях
Первый пример относится к Коллекциям. Это также может быть eloquent коллекция из базы данных. В коллекциях можно использовать цепочку dd()
.
Например, у вас может быть коллекция с map()
, filter()
, mapWitKeys()
и т.д., а в конце — dd()
для дампа результата.
collect(['John Doe', 'Jane Doe'])
->map(/* ваш код */)
->filter(/* ваш код */)
->mapWithKeys(/* ваш код */)
->dd();
И в конце дамп результата.
Illuminate\Support\Collection {#287 ▼ // routes/web.php:17
#items: array:1 [▼
0 => "John Doe"
]
#escapeWhenCastingToString: false
}
Ссылка на официальную документацию.
2. dd()
в бенчмарке
Начиная с версии Laravel 9.32, появился новый способ тестирования производительности определённых частей приложения. Для таких случаев можно использовать хелпер класс Benchmark
.
Benchmark::dd(fn () => User::find(1));
При этом будут получены результаты в миллисекундах.
"8.262ms" // vendor/laravel/framework/src/Illuminate/Support/Benchmark.php:67
Или может потребоваться протестировать различные сценарии. Для этого случая в dd
можно передать массив.
Benchmark::dd([
'Scenario 1' => fn () => User::count(), // 0.5 ms
'Scenario 2' => fn () => User::all()->count(), // 20.0 ms
]);
Здесь мы получаем результат в виде массива для обоих сценариев.
array:2 [▼ // vendor/laravel/framework/src/Illuminate/Support/Benchmark.php:67
"Scenario 1" => "7.287ms"
"Scenario 2" => "0.542ms"
]
Ссылка на официальную документацию.
3. dd()
для SQL-запросов
До Laravel 10.15 вместо получения записей из БД можно было использовать метод toSql
и получать дамп результата.
$users = User::where('is_admin', false)->toSql();
dd($users);
И в результате будет получен sql-запрос, но без привязок.
"select * from `users` where `is_admin` = ?" // routes/web.php:20
Начиная с Laravel 10.15 появились новые методы toRawSql()
, dumpRawSql()
и ddRawSql()
. Поэтому вместо toSql
мы можем использовать toRawSql
.
$users = User::where('is_admin', false)->toRawSql();
dd($users);
И теперь у нас есть sql-запрос с привязанными значениями.
"select * from `users` where `is_admin` = 0" // routes/web.php:20
Или вместо dd($users)
в конце запроса можно использовать ddRawSql
.
$users = User::where('is_admin', false)->ddRawSql();
Результат один и тот же.
"select * from `users` where `is_admin` = 0" // vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:3945
Вы можете ознакомиться с pull request на GitHub и с официальной документацией.
4. Несколько переменных
Иногда может потребоваться вывести дамп более чем одной переменной. Для этого достаточно разделить переменные запятой.
$usersCount = User::where('is_admin', false)->count();
$adminsCount = User::where('is_admin', true)->count();
dd($usersCount, $adminsCount);
Результат выведется дважды.
52 // routes/web.php:21
48 // routes/web.php:21
Ссылка на официальную документацию.
5. dump()
вместо dd()
Возможны ситуации, когда требуется выгрузить в дамп некоторую информацию без остановки остального выполнения приложения. В таких случаях вместо dd
следует использовать dump
.
Route::get('/', function () {
$usersCount = User::where('is_admin', false)->count();
$adminsCount = User::where('is_admin', true)->count();
dump($usersCount, $adminsCount);
return view('welcome');
});
В результате загружается вся страница, а дамп выводится наверх.

dump()
вместо dd()
Ссылка на официальную документацию.
6. Расширение целого объекта
Когда мы выгружаем дамп Eloquent Collection, у нас обычно есть массив элементов.

При клике на стрелку модель отображается, но все остальные значения остаются свёрнутыми.

Если необходимо раскрыть всё сразу, кликните на стрелку, удерживая клавишу Ctrl.

7. Вывод дампа из шаблона Blade
Чтобы вывести дамп значений из Blade, есть два способа.
Один из способов — использовать хелпер dd
в фигурных скобках.
{{ dd($yourVariable) }}
Второй способ заключается в использовании Blade директивы @dd
.
@dd($yourVariable)