php - 在回调之外获取 Laravel Excel block 结果

标签 php laravel callback laravel-excel

我在回调之外获取 Laravel Excel block 方法的结果时遇到问题。 我试图通过 use 关键字将变量传递给回调来解决这个问题。

指导 documentation我试过:

$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 时,你正在执行沙箱中的每个 chunk,因为 chunk 被放在队列中(当没有使用队列驱动程序时,它使用 laravel 同步驱动程序)。这意味着不可能通过引用传递变量。

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

关于php - 在回调之外获取 Laravel Excel block 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35555432/

相关文章:

PHP strtotime() 不输出任何内容

javascript - 从 mysql 到 javascript 变量

Laravel:将模型/行从一个连接复制到另一个连接

javascript回调上下文问题

callback - 如何从 flutter 中的状态类访问根类中的方法

php - 如何显示主分类及其子分类下的所有帖子?

php - 究竟是什么让 PDO 安全?

php - 如何授予 Composer 在 var/www/html 中创建文件夹的权限

php - 对特定 Controller 功能的授权 Laravel 5.1

javascript - Node.js 回调不执行