使用 Eloquent ORM 通过另一个 table 获取 table 记录

get table records through another table with Eloquent ORM

我有三个表和两个数据透视表!

艺术家
* id(主要) ...

music_artists
* id(主要)
* music_id(外键)
* artist_id(外键)

音乐
id(主要)
...

album_musics
id(主要)
music_id(外键)
album_id(外键)
...

相册
id(主要)
...

我的问题是如何访问 laravel eloquent 专辑的艺术家?

本案例没有原生关系。

我创建了 HasManyThrough 关系并支持 BelongsToManyRepository on GitHub

安装完成后可以这样使用:

class Album extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function artists() {
        return $this->hasManyDeep(
            Artist::class,
            ['album_musics', Music::class, 'music_artists']
        );
    }
}