如何使用Laravel Medialibrary检索相关模型的媒体?

时间:2018-10-01 10:34:02

标签: laravel-5 media-library

我有一个专辑模型和一个曲目模型。他们有一对多的关系。一个专辑可以有很多曲目,而一个曲目只能属于一个专辑。我正在使用媒体库将歌曲的封面和mp3关联到Track模型。

在我的AlbumController中,我有这样的查询;

$album = $album->where('id', $id)->with('tracks', 'artist')->first();
return view('admins.albums.show', compact('album'));

这将加载专辑的曲目,但不会加载媒体。在我看来,我可以通过遍历曲目并调用getMedia()函数来获取媒体,但是对于Api来说呢?

在作为响应发送媒体之前,如何将媒体作为Json返回?

1 个答案:

答案 0 :(得分:0)

例如,您可以使用祖先(https://laravel.com/docs/5.8/eloquent-mutators#accessors-and-mutators)将网址附加到模型(例如,使用不同的模型btw):

首先将其放在模型的开头(没关系):

protected $appends = [
    'logo_url'
];

和他们:

public function getLogoUrlAttribute()
{
    return (empty($this->getMedia('restaurants')[0])) ? "" : $this->getMedia('restaurants')[0]->getFullUrl();
}

此代码在附加了媒体特征的模型上进行。