繁体   English   中英

在回调之外获取Laravel Excel块结果

[英]Getting Laravel Excel chunk results outside callback

我在使用回调外的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具有与开头相同的值。 它只在回调内部发生变化。

我发现唯一的解决方案是将false作为第三个参数传递给chunk()函数,但这意味着我将无法使用队列。 看来我的回调是以某种方式序列化的,我无法通过引用传递我的$ foo。

所以我的问题是:如何让$ results结果值在回调之外?

使用chunk时,您正在执行每个沙盒,因为块被放在队列中(当没有使用队列驱动程序时,它使用laravel同步驱动程序)。 这意味着无法通过引用传递变量。

此功能已添加到2.1.0以解决性能问题。 chunk()的第3个参数接受布尔值来启用/禁用此功能。 参考: https//github.com/Maatwebsite/Laravel-Excel/issues/744

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM