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