<?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]
);
?>