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

Почему при вызове метода increment модели wasChanged принимает значение true у других аттрибутов?

Приветсвую.

$book = Book::find(300);
$book->full_name = Str::random();
$book->increment('some_value');

$book->wasChanged('full_name'); //true


Почему тут true? Ведь full_name в базе не обновился ...

Должно быть true если бы я после инкремента выполнил $book->save();
  • Вопрос задан
  • 564 просмотра
Подписаться 2 Простой 17 комментариев
Пригласить эксперта
Ответы на вопрос 2
@mrFlyer Автор вопроса
В общем в гитхабе сказали делать так:

You need to use

$book->increment('some_value', extra: ['full_name' => $book->full_name]);
or
$book->increment('some_value', extra: ['full_name' => Str::random()]);
or
$book->increment('some_value', extra: $book->getDirty());


Т.е. указываем какие поля сохранять вместе с инкрементом ... так себе решение.
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
Инкримент вызывает save(), он придуман для того чтобы упростить рутинную задачу меньшим количеством символов, а не вставлять его без дела в середину процесса.

есть два пути сохранения:
1)
$book = Book::find(300);
$book->full_name = Str::random()
$book->some_value++;
$book->save()


2)
Book::find(300)->update([
full_name => Str::random()
])


а ты смешал их вместе и ожидаешь логичного поведения
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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