我正在操作一个包含超过 45,000 条记录的数据库,我需要进行更新,将数据从一个表传递到另一个表,但每次传递数据时,我的 CLI 都会停止工作。关于如何以更顺畅的方式操作这些数据有什么建议吗?我看到一些文章谈论使用偏移量,但我无法将其应用到我的案例中。
$erp = Product::all();
OCProduct::where('product_id', '!=', 0)
->update(['model' => $erp->erp_model]);
最佳答案
我相信您的代码有问题。 $erp
将是一个 Collection
,因此它不会包含 erp_model
属性。您必须遍历该集合并获取 Product
的每个实例的 erp_model
并进行更新。
话虽如此,我只能猜测你想做什么,但你崩溃的原因很清楚。如果您有 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;
关于php - 如何限制 Eloquent 中的数据?拉拉维尔 5.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810843/