2016-05-17 47 views
0

Team有兩個該模型具有一對多的關係GameYii2:如何聲明兩個屬性中的任何一個匹配一個id的has-many關係?

public function getGamesWhereTeamIsSetAsHome() 
{ 
    return $this->hasMany(Game::className(), ['teamHome' => 'id']); 
} 

public function getGamesWhereTeamIsSetAsAway() 
{ 
    return $this->hasMany(Game::className(), ['teamAway' => 'id']); 
} 

我想一個具有一對多的關係返回所有的遊戲,它要麼teamHome或teamAway設置爲團隊的ID (就像上面兩個關係的組合)。

public function getGames() 
{ 
    return /* code here */; 
} 

如何建立這樣的關係?

+1

首先的理解如何在yii2所述的hasMany關係方法工作,第二個參數是主鍵的陣列 - 外鍵約束(相應的類的屬性),以便有是不是你可以在該函數中添加OR條件。否則你可以保留它爲空,所以你必須改變你的方法來實現這個 –

+1

什麼是'teamUp','teamDown'的含義?你可以在Team table上將其標記爲'type'或'category'嗎? –

+0

@KandarpPatel你說得對,我已經編輯了我的問題。 – Mathias

回答

0
public function getGames($id) 
{ 
    return Games::find()->where(['or',['teamHome'=>$id],['teamAway'=>$id]])->all(); 
} 

和而主叫

$games = $model->getGames($model->id); 
+0

沒有必要給$模型自己的id - 但我明白了。 – Mathias

相關問題