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

Метод chunkById

Метод chunkById применяется к запросу Eloquent или Query Builder и предназначен для обработки больших наборов данных без риска превышения лимитов памяти. В отличие от метода chunk, данный метод использует идентификатор для пагинации, что гарантирует, что ни одна запись не будет пропущена при изменении данных во время обработки. Первым параметром передаётся количество записей в одном фрагменте, вторым - имя колонки для пагинации (по умолчанию 'id'), третьим - имя столбца для сортировки.

Синтаксис

<?php Model::chunkById($chunkSize, $callback, $column, $alias); ?>

Пример

Давайте обработаем все статьи из базы данных по частям, выводя их заголовки:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function index() { Article::chunkById(3, function ($articles) { foreach ($articles as $article) { echo $article->title . "n"; } }); } } ?>

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

"article 1" "article 2" "article 3" "article 4" "article 5"

Пример

Давайте обработаем статьи с id больше 10, используя колонку id в качестве идентификатора:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function index() { Article::where('id', '>', 10) ->chunkById(5, function ($articles) { foreach ($articles as $article) { echo $article->title . "n"; } }, 'id'); } } ?>

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

"article 11" "article 12" "article 13" "article 14" "article 15"

Пример

Давайте изменим статус всех статей на 'published' по частям, обновляя их внутри колбэка:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function updateStatus() { Article::chunkById(2, function ($articles) { foreach ($articles as $article) { $article->status = 'published'; $article->save(); echo "Updated article ID: " . $article->id . "n"; } }); } } ?>

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

"Updated article ID: 1" "Updated article ID: 2" "Updated article ID: 3" "Updated article ID: 4" "Updated article ID: 5"

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

  • метод chunk,
    который обрабатывает данные по частям с использованием смещения
  • метод lazy,
    который возвращает ленивую коллекцию для больших наборов данных
  • метод cursor,
    который возвращает курсор для итерации по результатам запроса
  • метод get,
    который выполняет запрос и возвращает коллекцию всех записей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить