在表格帖子中,我有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
来做。但是我如何才能雄辩地清除所有帖子的排名,也许会更好,更快?
答案 0 :(得分:2)
我认为,雄辩的速度不太可能更快,因为它会执行相同的SQL。不过,这样会更好看。
使用口才更新所有帖子:
Post::update(['rank' => null]);
如果您想基于某些PHP逻辑设置等级,您最好只遍历每个元素,但是随着您有更多的帖子,这将花费越来越多的时间。每次显示帖子时,最好计算排名(如果该计算相对较快)。
答案 1 :(得分:0)
您可以使用Laravel Eloquent轻松完成此操作,如下所示:
Post::query()->update(['rank' => null]);