Изменение данных в Eloquent Laravel

Для добавления записи в базу данных в модели Eloquent на Laravel используется метод "save". Продемонстрируем способ создания и добавления данных:
<?php
namespace App\Http\Controllers;

use App\Food;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class FoodController extends Controller {
   public function add(Request $request) {
      $foods = new Food;
      $foods->name = $request->name;
      $foods->save();
   }
}
?>
В этом примере будет добавлена запись, у которой в столбце под названием "name" стоит принятое значение из объекта "request".

Метод "save" можно использовать не только для добавления записей в базу данных, но и для изменения. Для этого сначала нужно получить запись методом find:
<?php
   $food = App\Food::find(1);
   $food->name = 'Cheese';
   $food->save();
?>
Порой нужно не просто добавить запись в базу, а проверить есть ли она уже и обновить её значение в случае успешного поиска. Для этого можно использовать метод "firstOrCreate".

Если добавлять данные в базу не нужно, то можно воспользоваться методом "firstOrNew". Он мохож на "firstOrCreate", но не добавляет запись в базе, если её не найдено, а только возвращает новый экземпляр модели. После чего можно произвести с ней любые действия и сохранить методом save.

Оба метода "firstOrCreate" и "firstOrNew" в качестве аргумента принимает массив ключ-значение с данными для поиска/вставки (включи - это название столбцов в базе, а значения - содержимое ячеек).
<?php
   // получить запись или создать, если её не существует
   $food = App\Food::firstOrCreate(['name' => 'Cheese']);

   // получить запись или создать новый экземпляр
   $food = App\Food::firstOrNew(['name' => 'Cheese']);
   $food->save();
?>
Аналогично описанной ситуации может повстречаться задача обновления записи в базе. Но запись может отсутствовать, поэтому придётся создавать её. Чтобы сделать это в одном действии, можно воспользоваться методом "updateOrCreate". Первым аргументом в этот метод передаётся массив для поиска, а вторым массив для установки значений:
<?php
   // обновить запись с 'name' - 'Cheese' и 'group' - 'favorite'
   // установить значение поля 'price' равным 35
   // если такой записи не существовало, то она будет создана
   $food = App\Food::updateOrCreate(
      ['name' => 'Cheese', 'group' => 'favorite'],
      ['price' => 35]
   );
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх