@naneri
PHP разработчик.

Как изменить данные внутри самой модели?

Есть функции в котроллере:

...
if($message->receiver_id == Auth::id()){

    // отмечает сообщение прочитанным
   $message->setWatched();
}
....


Теперь как мне внутри метода класса изменить параметр обьекта? Я пробовал такой код
static function setWatched(){  
              $this->watched = 1; 
	   }


Но выдаёт ошибку "Using $this when not in object context", можно конечно заново вытащить данные обьекта из базы данных - но это +1 запрос к базе данных. Или можно ещё прям в контроллере написать логику - но это Bad Practice. Как быть?
  • Вопрос задан
  • 2300 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
У вас метод статичным объявлен, на что в ошибке и указано. Уберите static и все будет работать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
greabock
@greabock
Могу
public function setWatched()
{  
              $this->defineWatched(1);
}

public function defineWatched($value)
{
              $this->watched = $value;
}

Вот так лучше. Нужно же два врапера на публичное свойство. Одного-то мало.
Ответ написан
Ваш ответ на вопрос

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

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