将Laravel中的所有记录的列设置为空

时间:2019-04-12 16:33:43

标签: php laravel

在表格帖子中,我有rank列。我需要所有记录(10000+)设置列rank为空。我该怎么办?

我有静态功能:

 public static function calculateRank() {
      DB::statement("UPDATE posts set rank = null");
      DB::statement("UPDATE posts..."); //do calculate ranks for all posts
 }

我可以用DB::statement来做。但是我如何才能雄辩地清除所有帖子的排名,也许会更好,更快?

2 个答案:

答案 0 :(得分:2)

我认为,雄辩的速度不太可能更快,因为它会执行相同的SQL。不过,这样会更好看。

使用口才更新所有帖子:

Post::update(['rank' => null]);

如果您想基于某些PHP逻辑设置等级,您最好只遍历每个元素,但是随着您有更多的帖子,这将花费越来越多的时间。每次显示帖子时,最好计算排名(如果该计算相对较快)。

答案 1 :(得分:0)

您可以使用Laravel Eloquent轻松完成此操作,如下所示:

Post::query()->update(['rank' => null]);