首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel一次更新多个记录

Laravel一次更新多个记录
EN

Stack Overflow用户
提问于 2018-03-18 22:32:48
回答 3查看 1.4K关注 0票数 0

我有一个包含1000000条记录的mysql数据库表。我想更新每一行中的一列。

--我试过

代码语言:javascript
运行
AI代码解释
复制
public function methodWorking()
{
    $properties = Property::with('requests')->get();
    foreach ($properties as $property) {
        $property->number_of_request = count($property->requests);
        $property->save();
    }
}

这是一个工作,但,它是非常糟糕的表现。

我想写一个这样的代码:

代码语言:javascript
运行
AI代码解释
复制
public function methodExpect()
{
    $properties = Property::with('requests')->get();
    $property_array = [];
    foreach ($properties as $property) {
        $property->number_of_request = count($property->requests);
        $property_array[] = $property;
    }

    Property::save($property_array);
}

能用拉拉吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2018-03-18 23:15:42

如我所知,没有办法用MySQL在一个查询中进行批量更新。您可以在循环中使用一些东西,比如将Property::save($property_array);放入foreach中。

有关详细信息,请参阅

票数 1
EN

Stack Overflow用户

发布于 2018-03-19 07:36:45

更改所有(或大多数)行通常表示架构设计不佳。您想告诉我们列包含了什么以及为什么需要进行大规模的更改吗?

考虑从表中删除该列--然后以其他方式提供值。

是的,百万行表的UPDATE需要很长时间。这是因为每一行的旧副本都保留在上面,以防出现ROLLBACK

若要对表进行分块,将其分成可管理的部分,请参见分块

票数 0
EN

Stack Overflow用户

发布于 2018-09-01 07:33:01

您可以使用LaravelBatch,它非常有用(在10000条记录上测试)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49357032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档