Почему-то не работает мутация. like + 1 (если раскомментировать строку) работает, изменения заносятся в таблицу БД. А вот like + 5 не срабатывает. В чем может быть причина? Мутации использую впервые, может не правильно понял их принцип работы. PHP: public function updateLike(Request $request){ $comment = Comment::find($request->id); //$comment -> like = $comment-> like + 1; $comment -> save(); } public function setLikeAttribute($value){ $this -> like = $value+5; }
Это переменная $value. Или я ошибаюсь? Т.е. like + 5 это по идее должно быть то же самое, что и $value + 5
А что там должно быть? Разве не значение редактируемого параметра туда должно попадать (автоматичекси)? Я пересмотрел кучу примеров, и везде одно и то же. Везде $value на входе при том, что сам метод мы явно нигде не вызываем, а значит и не можем ему ничего передать в эту переменную. Но в примерах она есть. Чего-то я недопонимаю, но не могу понять чего я не понимаю. Подскажите как должно быть правильно.
Правильно это когда понимаешь что делаешь. Неправильно, когда надеешся, что скопированное из разных мест чудесным образом заработает.
PHP: public function setLikeAttribute($value){ $this -> like = $this -> like+$value; } или PHP: public function setLikeAttribute($value){ $this -> like = $this -> like+5; } смотря что нужно вам... а еще - что за "мутации" ??? чет не понимаю
PHP: public function setFirstNameAttribute($value) { $this->attributes['first_name'] = strtolower($value); } Обратите внимание на синтаксис мутации.
Разобрался, синтаксически у меня было все верно. artoodetoo, я правильно "скопировал из разных мест". И наличие переменной $value - это тоже норм. Но все же две ошибки я допустил. Во-первых, не мутация, а мутатор. Сори. Во-вторых (и по этой причине у меня ниче не работало), я должен был написать метод setLikeAttribute() в модели, а не в контроллере. Вот оно че, Михалыч. Всем спасибо.