Php 如何以雄辩的方式限制数据?拉威尔5.4

Php 如何以雄辩的方式限制数据?拉威尔5.4,php,mysql,laravel,Php,Mysql,Laravel,我正在操作一个包含超过45000条记录的数据库,我需要进行更新,将数据从一个表传递到另一个表,但每次传递数据时,我的CLI都会停止工作。关于如何更流畅地处理这些数据,有什么建议吗?我看到一些关于使用偏移量的文章,但我无法将其应用到我的案例中 $erp = Product::all(); OCProduct::where('product_id', '!=', 0) ->update(['model' => $erp->erp_model]);

我正在操作一个包含超过45000条记录的数据库,我需要进行更新,将数据从一个表传递到另一个表,但每次传递数据时,我的CLI都会停止工作。关于如何更流畅地处理这些数据,有什么建议吗?我看到一些关于使用偏移量的文章,但我无法将其应用到我的案例中

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

我相信你的代码有问题
$erp
将是一个
集合
,因此它不包含
erp\U模型
属性。您必须遍历该集合,为
产品的每个实例抓取
erp\u模型
,并进行更新

话虽如此,我只能猜测你想做什么,但很清楚你为什么要崩溃。如果您有45000条记录,那么您将尝试将这些记录存储在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;
更新oc\u产品
oc_products.product_id=products.id上的内部联接产品
设置oc_products.model=products.erp_model
其中oc_products.product_id为0;

您的更新逻辑是什么?抱歉,我弄错了列,现在我已经修复了。但这不会压倒我的代码吗?我不知道您在问什么。它只是将PHP中的工作卸载到数据库中,而数据库正是为这些情况而设计的。明白了。非常感谢。