Есть ли способ использовать мутатор Ларавеля в несуществующем столбце?

#laravel #laravel-5.8

#ларавель #ларавель-5,8

Вопрос:

Приведенный ниже метод не вызывается, так как атрибут «имя_отца» не существует в виде столбца в таблице. Как я могу вызвать метод, даже если столбец не существует?

 public function setOtherNameAttribute($value) {  $this-gt;attributes['name'] = $value; }  

Комментарии:

1. Если вы используете атрибуты, при сохранении Laravel попытается сохранить в несуществующий столбец. это приведет к ошибке. Зачем вам нужен этот атрибут, если он не будет сохранен? Может быть, есть лучший способ передать то, что вы хотите сделать

2. Как насчет того, чтобы просто добавить public_name свойство в класс модели?

3. защищенный $добавляет = [‘другое имя’]; общедоступная функция getOtherNameAttribute() { возвращает «другое имя»;} в экземпляре модели вы получите поле другое имя

Ответ №1:

 public function getOtherNameAttribute() {  // $anyValue is anything you can use a string, parameter or whatever else you want  return $this-gt;attributes['other_name'] = $anyValue; }  

И вы можете позвонить в это приложение отовсюду, например: $objectName-gt;other_name

Комментарии:

1. Атрибут getOtherNameAttribute должен возвращать значение, а не устанавливать значение

2. Но он также может установить новое значение, вы можете просто открыть любой проект Laravel и попробовать его самостоятельно. 😉

3. Я попробовал это. Это работает для столбцов, которые существуют, но не для столбцов, которых не существует, что я и пытаюсь сделать. Есть какие-нибудь идеи?

4. @VasoGamdelidze С его помощью вы можете устанавливать значения…, правда, вы также можете поливать свои растения ложкой.

5. А что $objectName-gt;other_name возвращается, если вы ничего не возвращаете public function getOtherNameAttribute() ? И где это $anyValue определено?