Laravel:处理数据后使用外部变量吗?

问题描述 投票:0回答:1

我有一个函数getUnfilledOrders,可以从数据库中获取订单,然后使用chunk一次将它们转到checkStatus 10。如果我有100个订单,我相信会发生的流程是checkStatus get将被调用10次(因为有100个订单)。现在,一旦完成,我想访问getUnfulfilledOrders中的$ totalOrders。这可能吗?

protected function getUnfulfilledOrders()
{
    Order::where('order_status', '!=', true)
        ->where('tracking_number', '!=', null)
        ->limit(3000)
        ->chunk(10, function ($unfulfilledOrders) {
            $this->checkStatus($unfulfilledOrders);
        });

   // how to do something now with $totalOrders once ALL Orders are processed 10 at a time;

}

protected function checkStatus($unfilledOrders)
{
    $totalOrders = array();

    foreach ($unfulfilledOrders as $unfulfilledOrder) {
         // logic here
         array_push($totalOrders, $unfulFilledOrder->id);
    }
}
php laravel
1个回答
1
投票

喜欢这个:

protected function getUnfulfilledOrders()
{
    $totalOrders = [];

    Order::where('order_status', '!=', true)
        ->where('tracking_number', '!=', null)
        ->limit(3000)
        // Add use (&$totalOrders)
        ->chunk(10, function ($unfulfilledOrders) use (&$totalOrders) {
            $totalOrders = array_merge($totalOrders, $this->checkStatus($unfulfilledOrders));
        });

   // how to do something now with $totalOrders once ALL Orders are processed 10 at a time;

}

protected function checkStatus($unfilledOrders)
{
    $totalOrders = array();

    foreach ($unfulfilledOrders as $unfulfilledOrder) {
         // logic here
         array_push($totalOrders, $unfilledOrder->id);
    }

    // Return the generated array
    return $totalOrders;
}

[我在getUnfulfilledOrders()的开头启动了一个空数组,并将checkStatus()返回的所有内容合并到其中。

More on use ($var)

use ($var)

© www.soinside.com 2019 - 2024. All rights reserved.