#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
определено?