我正在用CakePHP建立一個MMA(混合武術)網站。我在我的數據庫中有一個fights
表,它有三列最簡單的列:id
,fighter_a
和fighter_b
。有兩個hasOne關係到同一表的模型
我很難找到我的頭模型將與我的Fighter
模塊有什麼類型的關係。我是否正確地認爲fighter_a
和fighter_b
會是兩個hasOne
的關係?
我想這與我的Fight
模型如下:
<?php
class Fight extends AppModel {
public $name = 'Fight';
public $hasOne = array(
'FighterA' => array(
'className' => 'Fighter',
'foreignKey' => 'fighter_a'
),
'FighterB' => array(
'className' => 'Fighter',
'foreignKey' => 'fighter_b'
)
);
}
然後這在我的Fighter
模型:
<?php
class Fighter extends AppModel {
public $name = 'Fighter';
public $hasMany = array(
'Fight'
);
}
但調用$this->Fight->findById($id)
(當我的CakePHP應用這個扔了一個錯誤其中$id
是戰鬥機的ID):
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Fight.fighter_id' in 'field list'
我怎樣才能連接我的模型,以便我可以打電話給戰鬥機一直在打架的所有戰鬥?
請問您的應用程序顯示了SQL調試?如果是這樣,你能否將相關查詢複製到你的問題上? 這可能是因爲你需要根據戰鬥機是否列爲戰鬥機B的戰鬥機A來定義你的hasMany's homeFight和awayFight。 – Joep
當然。我認爲問題在於我想查詢它形成戰鬥機的時候。假設我正在展示Brock Lesnar的個人資料。我想顯示他的戰鬥歷史,所以任何記錄中他的ID值出現在'fights'表的'fighter_a_id'或'fighter_b_id'列中,按日期降序排列。 –
這真的是一個沒有答案的東西(因爲它不能解決這個問題),但我會考慮只是爭取比戰鬥。換句話說:'$ this-> Fighter-> Fight-> find('all',array('conditions'=> array('OR'=> array('fighter_a_id'=> $ id,'fighter_b_id'= > $ id))))' – Joep