Установить нулевой столбец для всех записей в Laravel - PullRequest
1 голос
/ 12 апреля 2019

В таблице сообщений у меня есть столбец 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 ]

3 голосов
/ 12 апреля 2019

Я думаю, что очень маловероятно, что eloquent будет быстрее, поскольку он будет выполнять тот же SQL.Хотя было бы немного приятнее читать.

Обновите все сообщения, используя Eloquent:

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

Если вы хотите установить рейтинг на основе некоторой логики PHP, вы можете простоЗацикливайтесь на каждом элементе, но это займет все больше и больше времени, поскольку у вас будет больше постов.Возможно, будет лучше вычислять рейтинг каждый раз, когда отображается сообщение (если этот расчет выполняется относительно быстро).

1 голос
/ 12 апреля 2019

Вы можете сделать это, просто используя Laravel Eloquent, как показано ниже:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...