Я работаю над проектом, где мне нужно будет получить не менее 100 тыс. Данных из таблицы SQL (данные представляют собой 6-значный код, индексированный в таблице), экспортируют их в файл CSV и запускают запрос обновления для обновления своего статуса.Массовое обновление на Laravel 5 Collection
Время экспорта занимает всего несколько секунд, но из-за запросов обновления требуется много времени. Я ищу эффективный способ выполнения этой задачи.
Вот мой код:
$filename = 'sample.csv';
$handle = fopen($filename, 'w+');
$collection = Code::select('code')->where('status', 0)->take($request->quantity)->get();
foreach ($collection->chunk(500) as $codes) {
foreach ($codes as $code) {
fputcsv($handle, [
$code->code,
]);
// this update query making the whole process taking long time
Code::where('code', $code->code)->update(['status' => 1]);
}
}
fclose($handle);
Я ищу лучший способ для обновления этих данных. Какие-либо предложения?
Я думал, что у Laravel 5 был способ выполнить обновление коллекции, а не только на отдельных моделях в этой коллекции –
Нет. Они этого не сделали. Вот список доступных методов, которые вы можете использовать с коллекцией: http://laravel.com/docs/5.1/eloquent-collections#available-methods –