Метод decrement
Метод decrement применяется к модели Eloquent и уменьшает значение указанной колонки на заданное количество. Первым параметром передаётся имя колонки, вторым - количество, на которое нужно уменьшить значение (по умолчанию равно 1). Метод автоматически обновляет поле и возвращает количество затронутых строк.
Синтаксис
<?php
Model::decrement($column, $amount);
?>
Пример
Давайте уменьшим количество просмотров статьи с id равным 1 на 5:
<?php
use AppModelsArticle;
$affected = Article::where('id', 1)->decrement('views', 5);
echo $affected;
?>
Результат выполнения кода:
"1"
Пример
Если второй параметр не указан, значение уменьшится на 1. Давайте уменьшим количество лайков для всех статей категории с id равным 2:
<?php
use AppModelsArticle;
$affected = Article::where('category_id', 2)->decrement('likes');
echo $affected;
?>
Результат выполнения кода:
"4"
Пример
Метод decrement можно комбинировать с другими методами для более гибкого обновления данных. Уменьшим количество просмотров для статей, у которых status равен 'published', и уменьшим значение на 3:
<?php
use AppModelsArticle;
$affected = Article::where('status', 'published')
->where('views', '>', 10)
->decrement('views', 3);
echo $affected;
?>
Результат выполнения кода:
"3"
Пример
Метод decrement также доступен для экземпляра модели. Получим модель и уменьшим её значение:
<?php
use AppModelsArticle;
$article = Article::find(5);
$article->decrement('views', 2);
echo $article->views;
?>
Результат выполнения кода:
"8"
Пример
При использовании decrement можно одновременно обновить другие поля с помощью метода update:
<?php
use AppModelsArticle;
$affected = Article::where('id', 3)->decrement('views', 1, [
'updated_at' => now(),
'is_updated' => true
]);
echo $affected;
?>
Результат выполнения кода:
"1"