如何限制Eloquent中的数据? Laravel 5.4

时间:2017-05-05 17:37:50

标签: php mysql laravel

我正在操作一个包含超过45,000条记录的数据库,我需要进行更新,将数据从一个表传递到另一个表,但每次传递数据时,我的CLI都会停止工作。有关如何以更顺畅的方式操纵这些数据的任何建议?我看到一些文章谈论使用偏移量,但我不能将它应用于我的情况。

    $erp = Product::all();
    OCProduct::where('product_id', '!=', 0)
        ->update(['model' => $erp->erp_model]);

1 个答案:

答案 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;