Подтвердить что ты не робот

Как установить каждую строку с тем же значением с Laravel Eloquent/Fluent?

Мне нужно обновить все строки в базе данных, чтобы конкретное поле во всех из них было равно одному значению. Вот пример.

Скажем, моя таблица базы данных выглядит так:

id    |   data   |  confirmed
1     | someData |      0
2     | someData |      1
3     | someData |      0

Я хочу выполнить запрос, который устанавливает подтвержденное поле каждой строки в 1.

Я мог бы сделать это следующим образом:

$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
    $row->confirmed = 0;
    $row->save();
}

Но похоже, что будет лучший способ? Единственный запрос, который просто сказал бы: "установить каждую строку" подтверждено "в поле" 1 ".

Есть ли такой запрос в Laravel Rloquent/Fluent?

4b9b3361

Ответ 1

Ну, простой ответ: нет, вы не можете с красноречивым. Модель представляет 1 строку в базе данных, это было бы бессмысленно, если бы они реализовали это.

Однако есть способ сделать это с бегло:

$affected = DB::table('table')->update(array('confirmed' => 1));

или даже лучше

$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));

Ответ 2

Чтобы поддерживать текущий поток, вы можете обновлять все строки по модели Eloquent напрямую, используя:

Model::query()->update(['confirmed' => 1]);

Ответ 3

Вы можете сделать это с помощью elquent (laravel 4):

MyModel::where('confirmed', '=', 0)->update(['confirmed' => 1])