[英]Laravel 5.5 HasManyThrough Relationship
我有以下數據庫:
teams
-----
id
user_id
users
-----
id
pages
-----
id
user_id
team_id -> (nullable)
因此,用戶可以創建團隊並創建頁面
當前,我具有以下關系設置(用$this
代替)
teams_owned() -> $user->hasMany(Team::class); // Teams a user owns
pages() -> $user->hasMany(Page::class); // Page a user created
user() -> $team->belongsTo(User::class); // User who created team
user() -> $page->belongsTo(User::class); // User who created the Page
但是,用戶可以通過為該團隊創建頁面來加入該團隊。 在這種情況下, pages
表將填充team_id
。 在創建頁面而非團隊頁面的情況下, team_id
值將為null
我想為User
添加一個關系以加入Team
。 如上所述,如果您已為其創建Page
,那么您就是Team
一員。
我嘗試了以下方法:
public function teams_joined()
{
return $this->hasManyThrough(Team::class, FundraisingPage::class);
}
我不確定在這種情況下是否應該使用HasManyThrough
作為備份,我有以下內容:
public function teams_joined()
{
$uniqueTeamIds = $this->pages()->onlyForTeams()->get()->pluck('id')->unique();
return Team::whereIn('id', $uniqueTeamIds)->get();
}
其中onlyForTeams()
被定義Page
作為
public function scopeOnlyForTeams($query) {
return $query->whereNotNull('team_id');
}
但是我想使用適當的關系,因此想知道是否應該針對這種情況使用HasManyThrough
或其他方式。
使用BelongsToMany
關系:
public function teams_joined()
{
return $this->belongsToMany(Team::class, 'pages');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.