Я использую Laravel 6 и я хочу получить доступ к атрибуту аватара от пользователя, когда я использую отношение posts ().
Модель пользователя:
/**
* @var array
*/
protected $appends = [
'avatar',
];
/**
* @return HasMany
*/
public function posts(): HasMany
{
return $this->hasMany(Post::class);
}
/**
* @return string
*/
public function getAvatarAttribute(): string
{
return sprintf('https://secure.gravatar.com/avatar/%s?s=500', md5($this->email));
}
Код моего контроллера:
$topic = Topic::where('slug', $slug)->firstOrFail();
foreach ($topic->posts()->get() as $post) {
dd($post->user->avatar); // return null
}
Почтовая модель:
/**
* @return BelongsTo
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
Я получаю имя пользователя с $post->user->name
, но атрибут аватара не вызывается.