РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
261 of 1392 menu

Метод tap

Метод tap применяется к запросу Eloquent или Query Builder и позволяет выполнить произвольный код с текущим экземпляром построителя запроса, не нарушая цепочку методов. Метод принимает замыкание, в которое передаётся текущий экземпляр запроса. Возвращает тот же запрос без изменений, что позволяет продолжить цепочку методов.

Синтаксис

<?php Model::tap(function ($query) { // Дополнительные действия с $query })->get(); ?>

Пример

Давайте выполним отладку запроса перед его выполнением:

<?php use AppModelsArticle; $res = Article::where('status', 'published') ->tap(function ($query) { echo "SQL: " . $query->toSql(); }) ->get(); foreach ($res as $article) { echo $article->title; } ?>

Результат выполнения кода:

"SQL: select * from 'articles' where 'status' = ?" "article 1" "article 2" "article 3"

Пример

Давайте запишем в лог количество записей перед выборкой:

<?php use AppModelsArticle; use IlluminateSupportFacadesLog; $res = Article::where('status', 'published') ->tap(function ($query) { $count = $query->count(); Log::info("Found {$count} published articles"); }) ->orderBy('created_at', 'desc') ->get(); foreach ($res as $article) { echo $article->title; } ?>

Результат выполнения кода:

"article 3" "article 2" "article 1"

Пример

Давайте временно изменим параметры запроса для отладки:

<?php use AppModelsArticle; $res = Article::where('status', 'published') ->tap(function ($query) { // Добавляем временное условие для отладки $query->where('id', '>', 1); }) ->get(); foreach ($res as $article) { echo $article->title; } ?>

Результат выполнения кода:

"article 2" "article 3"

Смотрите также

  • метод when,
    который условно применяет замыкание к запросу
  • метод unless,
    который условно применяет замыкание при ложном условии
  • метод dump,
    который выводит информацию о запросе
  • метод dd,
    который выводит информацию и завершает выполнение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить