Метод updateOrCreate
Метод updateOrCreate применяется к модели Eloquent
и позволяет найти запись по заданным условиям. Если запись
найдена, она обновляется переданными данными. Если запись
не найдена, создаётся новая запись с переданными атрибутами.
Первый параметр метода - это массив условий для поиска,
второй параметр - массив данных для обновления или создания.
Синтаксис
<?php
Model::updateOrCreate($conditions, $data);
?>
Пример
Давайте найдём статью с slug равным 'first-article'
и обновим её заголовок. Если такой статьи нет, создадим новую:
<?php
use AppModelsArticle;
$res = Article::updateOrCreate(
['slug' => 'first-article'],
['title' => 'Updated title', 'status' => 'published']
);
echo $res->title;
?>
Результат выполнения кода:
"Updated title"
Пример
Давайте найдём пользователя по email и обновим его имя.
Если пользователь не найден, создадим нового:
<?php
use AppModelsUser;
$res = User::updateOrCreate(
['email' => 'john@example.com'],
['name' => 'John Doe', 'role' => 'admin']
);
echo $res->name;
?>
Результат выполнения кода:
"John Doe"
Пример
Давайте найдём категорию по slug и обновим её название.
Если категория не существует, создадим новую:
<?php
use AppModelsCategory;
$res = Category::updateOrCreate(
['slug' => 'new-category'],
['name' => 'New Category', 'description' => 'Description text']
);
echo $res->name;
?>
Результат выполнения кода:
"New Category"
Пример
Давайте найдём продукт по sku и обновим его цену.
Если продукт не найден, создадим новый:
<?php
use AppModelsProduct;
$res = Product::updateOrCreate(
['sku' => 'ABC-123'],
['name' => 'Laptop', 'price' => 999.99, 'stock' => 10]
);
echo $res->name . ' - ' . $res->price;
?>
Результат выполнения кода:
"Laptop - 999.99"
Смотрите также
-
метод
firstOrCreate,
который находит первую запись или создаёт новую -
метод
create,
который создаёт новую запись без проверки существования -
метод
update,
который обновляет уже существующие записи -
метод
firstOrNew,
который находит первую запись или создаёт новый экземпляр модели