0
在我的cakephp3應用程序中,我有一個Players表和一個Matches表,用於記錄兩個玩家之間完成的每場比賽。我的表的結構匹配是:Cakephp 3 - 玩家/匹配關係的正確關聯類型是什麼?
- ID
- 創建< - 日期時間
- winner_id < - 球員誰贏得了比賽的ID。
- loser_id < - 輸掉比賽的球員的ID。
我已經定義了玩家之間的關聯和匹配如下:
// in src/Model/Table/PlayersTable.php
$this->hasMany('Victories', [
'className' => 'Matches',
'foreignKey' => 'winner_id'
]);
$this->hasMany('Losses', [
'className' => 'Matches',
'foreignKey' => 'loser_id'
]);
當我想找回他的所有比賽的球員,我做的:
// in src/Controller/PlayersController.php
$player = $this->Players->findById($user_id)->contain(['Victories', 'Losses'])->first();
但是,這不是很方便,因爲要在一個地方得到所有球員的比賽,那麼我必須合併$player->victories
和$player->losses
。 另外,我不能輕鬆執行簡單的請求,例如「讓玩家獲得其最後50場比賽」。
所以我覺得我的數據庫模式不理想,我可以改進。但我真的不知道如何。任何建議?
再次感謝您的幫助! – PGBI 2015-03-31 15:59:17