我有4张桌子:
MusicGenre
Artist
Song
SongInfo
weekly_hit
是SongInfo
表格中的一列。
MusicGenre
与此Artist
相关联:
public function artists()
{
return $this->hasMany('App\Models\Artist\ArtistInfo','genre_id','id');
}
Artist
与此Song
相关联:
public function songs()
{
return $this->hasMany('App\Models\Song\Songs','artist_id');
}
Song
与SongInfo
连接如下:
public function info()
{
return $this->hasOne('App\Models\Song\SongsInfo','song_id','id');
}
查询表格没有问题。
我的问题是我希望在weekly_hit
表中使用SongInfo
获得最佳音乐流派。
编辑:
我用原始代码解决了这个问题
"select music_genres.*,
sum(distinct song_info.weekly_hit) as song_popularity
from `music_genres`
left join `artist_info` on
`music_genres`.`id` = `artist_info`.`genre_id`
left join songs on
artist_info.artist_id = songs.artist_id
left join songs_info on
songs.id = songs_info.song_id
group by music_genres.name
order by song_popularity DESC
limit 5
但是,我无法获得歌曲。我想从所有返回的音乐类型中获得songs_info表格中的weekly_hit排序的5首歌曲。
伙计们我还在寻找解决方案吗?
有人能帮助我吗?
答案 0 :(得分:0)
您需要使用Eloquent的hasManyThrough()关系来深入到关系链中。