@orsenorsen
Интересна Backend-разработка

Как сделать count+1 при использовании updateOrCreate?

Есть сводная таблица с атрибутом count, в котором будет храниться количество отзывов, чтобы не пересчитывать каждый раз. Как правильно написать логику прибавления +1 в последней строке кода при каждом новом отзыве?

$revCount = ReviewUserCount::updateOrCreate(
                ['user_id' => $user->id, 'review_id' => $request->reviews],       //здесь нахожу нужную строку
                ['count' => 'count'  + 1 ]);    //  так конечно не работает, потому что строка + число.
  • Вопрос задан
  • 154 просмотра
Решения вопроса 2
попробуйте обернуть в DB::raw()

$revCount = ReviewUserCount::updateOrCreate(
  ['user_id' => $user->id, 'review_id' => $request->reviews], //здесь нахожу нужную строку
  ['count' => DB::raw('count + 1')]
);

Или посмотрите на метод upsert() в 8-м Laravel. Что-то типа
ReviewUserCount::upsert(
  ['user_id' => $user->id, 'review_id' => $request->reviews, 'count' => 1],
  ['user_id', 'review_id'], 
  ['count' => DB::raw('count + 1')]
);
но что он возвращает – надо уточнять.
Ответ написан
pLavrenov
@pLavrenov
Разработка сайтов
$review_сount = ReviewUserCount::updateOrCreate(
  ['user_id' => $user->id, 'review_id' => $request->reviews], //здесь нахожу нужную строку
);
$review_сount->increment('count')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы