Laravel中的传入数据处理

时间:2018-07-26 10:56:09

标签: php laravel

我得到有关5万多种产品的json编码信息。任务是将所有这些产品传输到数据库。在这种情况下,如果存在具有当前ID的产品-应该简单地输入有关其的数据,否则-创建产品。 为此,我使用了foreach循环和updateOrCreate Laravel函数。 像这样:

$products = json_decode($jsonDecodedProducts, true);
foreach ($products as $product)
{
    Products::updateOrCreate(
    [ 'products_id' => $product['products_id'] ], 
        [
            'product_name' => $product['products_name'], 
        ]
    );
}

但是它工作很慢。 Laravel是否提供任何加速此任务的方法?

2 个答案:

答案 0 :(得分:0)

由于(例如)魔术方法和属性功能的原因,Laravel的Eloquent ORM在构造上相当慢。我的建议是通过使用DB门面构建原始查询来绕过这些过程。 此外,您可以将所有需要插入的行保存到数组中,然后批量插入。

答案 1 :(得分:0)

ORM仍然不是最快的解决方案,请尝试使用自定义sql查询编写它。

这里是有关类似https://laracasts.com/discuss/channels/eloquent/performant-way-to-mass-update-or-create

的讨论