我正在操作一个包含超过45,000条记录的数据库,我需要进行更新,将数据从一个表传递到另一个表,但每次传递数据时,我的CLI都会停止工作。有关如何以更顺畅的方式操纵这些数据的任何建议?我看到一些文章谈论使用偏移量,但我不能将它应用于我的情况。
$erp = Product::all();
OCProduct::where('product_id', '!=', 0)
->update(['model' => $erp->erp_model]);
答案 0 :(得分:1)
我相信您的代码存在问题。 $erp
将是Collection
,因此它不会包含erp_model
属性。您必须遍历该集合并为erp_model
的每个实例抓取Product
并进行更新。
话虽如此,我只能猜测你想要做什么,但很明显你为什么会崩溃。如果您有45,000条记录,则尝试将所有记录存储在PHP中的变量中,然后尝试对其运行查询。只允许数据库通过单个更新查询来处理所有内容会好得多。
UPDATE oc_products
INNER JOIN products ON oc_products.product_id = products.id
SET oc_products.model = products.erp_model
WHERE oc_products.product_id <> 0;