Laravel: Использование внешней переменной после обработки данных? - PullRequest
0 голосов
/ 26 января 2020

У меня есть функция getUnfilledOrders, где я получаю Заказы из базы данных, а затем использую chunk, чтобы получать их от go до checkStatus 10 одновременно. Если у меня будет 100 заказов, поток, который, я полагаю, произойдет, будет checkStatus get, который будет вызываться 10 раз (поскольку существует 100 заказов).
Теперь, когда это будет выполнено, я хочу получить доступ к $ totalOrders в getUnfulfilledOrders , Возможно ли это?

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);
    }
}

1 Ответ

1 голос
/ 26 января 2020

Примерно так:

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().

Подробнее о use ($var)

Подробнее о передаче по ссылке (&$var)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...