コールバックの外で Laravel Excel チャンク メソッドの結果を取得する際に問題があります。use
変数をキーワードでコールバックに渡すことで、この問題を解決しようとしました。
私が試したドキュメントに導かれて:
$foo = [[1, 2], [3, 4]];
Excel::filter('chunk')->load('file.csv')->chunk(250, function($results) use(&$foo)
{
foreach($results as $row)
{
$foo[] = [$row[0], $row[1]];
var_dump($foo); // [[1, 2], [3, 4], [5, 6]]
}
});
var_dump($foo); // [[1, 2], [3, 4]]
$foo は参照渡しなので、コールバック内で変更できるはずです。問題は、最後の var_dump() で $foo が最初と同じ値を持つことです。コールバック内でのみ変更されています。
機能していることがわかった唯一の解決策は、chunk() 関数の 3 番目の引数として false を渡すことですが、それはキューを使用できないことを意味します。私のコールバックはどういうわけかシリアル化されているようで、参照によって $foo を渡すことができません。
だから私の質問は: $results 値をコールバック外にする方法は?