簡體   English   中英

我如何在Eloquent中查詢這種關系?

[英]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相關的自由式:

  • 在Beat和Freestyle模型中創建關系:

擊敗:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM