gpt4 book ai didi

php - Laravel 5 集合的大量更新

转载 作者:行者123 更新时间:2023-11-29 06:25:37 25 4
gpt4 key购买 nike

我正在做一个项目,我需要从 SQL 表中获取至少 100k 数据(数据是在表中索引的 6 位代码),将它们导出到 CSV 文件并运行更新查询以更新它们状态。

导出时间仅需几秒钟,但由于更新查询需要很长时间。我正在寻找一种有效的方法来完成这项任务。

这是我的代码:

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

我正在寻找更新这些数据的更好方法。有什么建议吗?

最佳答案

你不能在文件写入后进行批量更新吗?

$filename = 'sample.csv';
$handle = fopen($filename, 'w+');

$query = Code::select('code')->where('status', 0)->take($request->quantity);

foreach ($query->get()->chunk(500) as $codes) {
foreach ($codes as $code) {
fputcsv($handle, [
$code->code,
]);
}
}
$query->update(['status' => 1]); // Update all of them in one go

fclose($handle);

关于php - Laravel 5 集合的大量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com