Задать вопрос
@semki096

Почему в базе вместо обновления записи — создается новая запись?

Это пример из Readme пакета звездного рейтинга - оценки материала
$post = Post::first();

$rating = new willvincent\Rateable\Rating;
$rating->rating = 5;
$rating->user_id = \Auth::id();

$post->ratings()->save($rating);

dd(Post::first()->ratings);

Насколько я понимаю при повторном обращении к данному скрипту - в базе не должна создаваться новая запись, но должна обновиться старая запись, правильно? Но она не обновляется а создается новая, несмотря на то что в доках на eloquent пишут:
Метод save() можно использовать и для изменения существующей модели в БД.

$flight = App\Flight::find(1);

$flight->name = 'New Flight Name';

$flight->save();


В чем моя ошибка?
  • Вопрос задан
  • 260 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
eastywest
@eastywest
Backend developer
Судя по коду, у вас идет именно создание новой записи. Обновления нет вообще.
Строка:
$post->ratings()->save($rating);
Делает лишь верную установку post_id у Rating модели и сохраняет Rating.
Ответ написан
Комментировать
SerafimArts
@SerafimArts
Senior Notepad Reader
В коде ровно одно создание и одно обновление. Так что одна запись не должна создаваться, а одна должна.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы