Метод increment
Метод increment используется для увеличения значения числового поля в базе данных на указанное количество. Он применяется к запросу Eloquent или Query Builder и возвращает количество затронутых строк. Первым параметром передаётся имя колонки, вторым - шаг увеличения (по умолчанию 1). Метод работает атомарно, что гарантирует корректность данных при конкурентных запросах.
Синтаксис
<?php
Model::where($column, $operator, $value)->increment($column, $amount);
?>
Пример
Увеличим количество просмотров статьи на 1:
<?php
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function incrementViews($id)
{
$article = Article::find($id);
$res = $article->increment('views');
echo "Rows affected: " . $res;
}
}
?>
Результат выполнения кода:
"Rows affected: 1"
Пример
Увеличим количество просмотров на 5 для статей определённого автора:
<?php
use AppModelsArticle;
class ArticleController extends Controller
{
public function incrementAuthorViews($authorId)
{
$res = Article::where('author_id', $authorId)
->increment('views', 5);
echo "Updated articles: " . $res;
}
}
?>
Результат выполнения кода:
"Updated articles: 3"
Пример
Увеличим количество просмотров и одновременно обновим другие поля:
<?php
use AppModelsArticle;
class ArticleController extends Controller
{
public function incrementWithUpdate($id)
{
$res = Article::where('id', $id)
->increment('views', 1, ['updated_at' => now()]);
echo "Updated rows: " . $res;
}
}
?>
Результат выполнения кода:
"Updated rows: 1"
Пример
Увеличим значение с использованием условий и дополнительных параметров:
<?php
use AppModelsArticle;
class ArticleController extends Controller
{
public function incrementActiveArticles()
{
$res = Article::where('status', 'published')
->where('views', '<', 100)
->increment('views', 2, ['updated_at' => now()]);
echo "Updated active articles: " . $res;
}
}
?>
Результат выполнения кода:
"Updated active articles: 5"