2015-11-30 33 views
0

是否可以聲明2與yii2中的同一張表的關係?聲明2與yii2中的同一張表的關係

例子:

tournament(id, name) 
game(id, tournamentId, team1Id, team2Id) 
team(id, name) 
player(id, name, teamId) 

因此,這裏的模式,正如你所看到的,一個遊戲應該由2個團隊,TEAM1和TEAM2。

現在在yii的錦標賽模型中,我需要創建一個關係,這會給我參加錦標賽的球隊。

public class Tournament extends ActiveRecord 
{ 
    ... 
    public function getGames() 
    { 
     return $this->hasMany(Game::className(), ['tournamentId' => 'id']); 
    } 

    public function getParticipatedTeams() 
    { 
     return $this->hasMany(Team::className(), [/*what should the link be? */])->via('games'); 
    } 
} 

我如何從比賽模型中獲得團隊?

+0

/*該鏈接應該是什麼? 好心提及你的條件 – Santosh

+0

只是通過ID將比賽連接到球隊。這是tournament.id = game.team1Id或tournament.id = game.team2Id – user2707590

+0

我不能認爲在沒有使用循環(在你的遊戲中)這樣做,合併兩個'hasmany's或類似的東西這個......據我讀'hasMany'方法不接受'或'=/ – Clyff

回答

0
public class Tournament extends ActiveRecord 
{ 
    ... 
    public function getGames() 
    { 
     return $this->hasMany(Game::className(), ['tournamentId' => 'id']); 
    } 

    public function getParticipatedTeam1() 
    { 
     return $this->hasMany(Team::className(), ['id' => 'team1Id'])->via('games'); 
    } 

    public function getParticipatedTeam2() 
    { 
     return $this->hasMany(Team::className(), ['id' => 'team2Id'])->via('games'); 
    } 
} 
+0

這個我已經知道了,我想知道的是,如果有可能在單個函數getParticipatedTeams()中得到它,它將返回給team1和team2 – user2707590

相關問題