[英]How can I query this sort of relationship in Eloquent?
模式如下:
Likes
id (pk)
UserID
FreestyleID
Freestyle:
id (pk)
BeatId
Beat:
id (pk)
trackId
Track:
id (pk)
GenreId
Genre:
id (pk)
Title
真的,我想通過他們喜歡的流派ID來獲得Freestyle的集合。 我已經嘗試了很多事情,包括諸如以下的關系:
Genre model:
public function beat()
{
return $this->hasManyThrough('App\Beat', 'App\Track', 'GenreId', 'TrackId');
}
但是,以上內容將返回如下結果,因為每個曲目最多可以包含三個節拍:
讓我知道您是否還需要查看其他內容。
您使用的是正確的方法,但是您將需要更多的代碼。 首先,您可以將流派的函數名稱更改為beats()-僅出於約定,因為它將返回多個寄存器:P。 其次,通過hasManyThrough,您將獲得與流派相關的所有Beats(通過Track)。 然后,您可以訪問與該Beat相關的自由式:
擊敗:
public function freestyles()
{
return $this->hasMany('App\Freestyle');
}
自由式:
public function beat()
{
return $this->belongsTo('App\Beat');
}
public function likes()
{
return $this->hasMany('App\Like');
}
has('freestyles.likes')
因此,您可以執行以下功能(流派模型):
public function beatsWithLikes()
{
return $this->beats()->has('freestyles.likes');
}
希望對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.