是否有必要避免循环来更新laravel中的模型?

时间:2019-02-28 14:16:27

标签: database laravel loops

我试图基于一个字段对一个模型的多个记录进行排序,并将它们的排名存储在DB中。如下所示:

$instances = Model::orderBy('field')->get();

$rank = 1;
foreach ($instances as $instance) {
    $instance->update([
        'rank' => $rank,
    ]);
    $rank++;
}

我有两个问题: 1-是否有其他方法可以避免使用循环?例如,我将等级放在一个数组中,并且仅通过一种魔术方法来更新整个记录。例如:

$instances = Model::orderBy('field')->get();

$rank = 1;
$ranks_array = array();
foreach ($instances as $instance) {
    array_push($ranks_array, $rank);
    $rank++;
}

$instances->magicMethod($ranks_array);

2-是否完全有必要这样做?循环对服务器是否有重大影响?需要说的是,我要更新的记录数可能根本不会超过50。

1 个答案:

答案 0 :(得分:1)

对于插入查询,一次插入所有记录的速度要比一次插入所有记录快得多。但是,对于更新查询,如果您需要使用特定数据更新特定行,则除了逐个更新它们之外,别无其他方法。