Требуется функция Accessor
:
Аксессоры и мутаторы Laravel
По сути, вы определяете функцию доступа вваша модель:
public function getAvatarAttribute($value)
{
return $value || 'some-default-image';
}
Затем при доступе к свойству avatar
с использованием ->avatar
будет вызвана функция accessor
, и вы получите вычисленное значение.
====================================================================
Комментарий ограничен количеством слов.
У вас есть таблица подписчиков, где каждый подписчик - User
.Вы используете отношение, чтобы отфильтровать всех последователей, которые являются группой User
с.Вы хотели, чтобы getInfo()
вызывался для каждого подписчика, чтобы дополнительные данные добавлялись к вашей структуре JSON
.
В этом случае вам не нужно фильтровать каждого подписчика и звонить getInfo()
самостоятельно.Вы используете метод accessor
, помещаете свой код в getInfo()
в метод accessor
и изменяете массив $appends
в вашей модели User
, после чего данные JSON
будут автоматически добавляться.
public function getUserInfoAttribute()
{
$userInfo = ... //use logic in your original getInfo method
return $userInfo;
}
Затем вы добавляете user_info
в $appends
массив вашей User
модели:
protected $appends = ['user_info'];
Таким образом, ваш user_info
будет автоматически включен при сериализации вашего экземпляра в JSON
.
Как я уже говорил в комментарии, вы должны проверить:
Добавление значений в JSON
для получения дополнительной информации.
Что касается API
с, независимо от того, используете ли вы Vue
или React
или что-либо еще, при передаче данных JSON
для вашего кода внешнего интерфейса вы в основном создаете api
с.К вашему сведению:
Eloquent: ресурсы API