Vapor Trail

明るく楽しく元気よく

LaravelでChunkを使用して、配列に値を入れて取得したいときになぜか空になる

<?php
$data = [];
DB::connection('products')
   ->table('products')
   ->orderBy('id', 'ASC')
   ->chunk(10, function ($products) {
        $data[] = $products;
});

chunkを使ってデータを分割して取得したものを配列に入れたいときに、 array() としか返ってこない。

<?php
$data = [];
DB::connection('products')
    ->table('products')
    ->orderBy('id', 'ASC')
    ->chunk(10, function ($products) use (&$data) {
    $data[] = $products;
});

クロージャの使い方が悪かった。 https://www.php.net/manual/ja/functions.anonymous.phpwww.php.net

クロージャは、変数を親のスコープから引き継ぐことができます。 引き継ぐ変数は、use で渡さなければなりません

あとChunkを使用するときは、orderByで指定しなければ使えない