Как добавить счетчик в laravel chunk без закрытия?

Как добавить счетчик в laravel chunk без закрытия?

23.12.2019 05:48:17 Просмотров 43 Источник

У меня есть 100000 данных, которые я хочу ввести одновременно, для этого я использую chunk, но chunk не может отображать результаты счетчика, который я сделал.

Это мой код:

$sbuLocationArray = [];
$mergeArray = [];
$insert_data = collect($map);
$chunks = $insert_data->chunk(500);
$loop = 0;
foreach ($chunks as $chunk) {
    SBU::insert($chunk->toArray());
    for ($i = 0; $i < count($provincesName[$loop]); $i++) {
        $locationId = Location::where('name', $provincesName[$loop][$i])->select('id')->first();
        $id = DB::getPdo()->lastInsertId();;
        $sbuLocationArray[] = ['sbu_id' => $id, 'location_id' => $locationId->id, 'created_by' => $user, 'updated_by' => $user, 'created_at' => Carbon::now(), 'updated_at' => Carbon::now()];
    }
    $loop++;
}
SBULocation::insert($sbuLocationArray);

return $loop;

В моем коде у меня есть $loopзначение $loop-это значение счетчика из массива count на foreach, я буду использовать его для установки индекса $provincesName

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105096020_59457191
где этот код называется? Куда возвращается $loop?
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105096085_59457191
я просто возвращаю $loop, чтобы показать счетчик, но $loop show равен 1, Если мои данные равны 5, $loop все равно 1
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105096171_59457191
как выглядит вызывающий код?
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105096439_59457191
Что ты имеешь в виду?
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105096447_59457191
Я ничего не понял
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105097377_59457191
просто предложение использовать конструктор запросов для получения идентификатора местоположения. QB быстрее чем красноречивый
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure#comment105099651_59457191
ок я понял, спасибо, это уменьшит время загрузки данных, хотя это почти близко к моим ожиданиям, но спасибо

Ответы - Как добавить счетчик в laravel chunk без закрытия? / How to add counter in laravel chunk without closure?

Является ответом!
Wahyu Kristianto

23.12.2019 06:08:49

foreach ($chunks as $chunk) {
    foreach ($chunk as $data) {
        $loop++; // $loop here
    }

    // Not here
}
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure/59457467#comment105096238_59457467
как насчет времени выполнения данных ?, здесь я использую очередь для вставки 100.000 данных в базу данных , а время выполнения данных составляет 49 секунд, перед этим я просто ввожу данные в одну таблицу, но в этом случае я использую переменную $locationId для вставки в SBULocation
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure/59457467#comment105096363_59457467
Это уже другой вопрос. Попробуйте использовать команду.
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure/59457467#comment105096693_59457467
в этом коде SBU:: insert($chunk - >toArray ()); находится ли в этом первом foreach или это foreach только для $loop ?
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure/59457467#comment105099659_59457467
это же работа!! спасибо, так что я могу использовать этот цикл для индекса
https://stackoverflow.com/questions/59457191/how-to-add-counter-in-laravel-chunk-without-closure/59457467#comment105099674_59457467
Рад это слышать :)
Закрыть X