具有多个外键的CakePHP模型关系
在我的CakePHP应用程序中,我有比赛和球队的模型。每场比赛都有一个主队id和一个客队id,这两个id都指向不同的球队 在my team.php文件中,我能够为球队的主场比赛建立关系:具有多个外键的CakePHP模型关系,cakephp,foreign-keys,relationship,has-many,Cakephp,Foreign Keys,Relationship,Has Many,在我的CakePHP应用程序中,我有比赛和球队的模型。每场比赛都有一个主队id和一个客队id,这两个id都指向不同的球队 在my team.php文件中,我能够为球队的主场比赛建立关系: var $hasMany = array( 'HomeMatch' => array('className' => 'Match', 'foreignKey' => 'home_team_id'), 'AwayMatch' => array('className' => '
var $hasMany = array(
'HomeMatch' => array('className' => 'Match', 'foreignKey' => 'home_team_id'),
'AwayMatch' => array('className' => 'Match', 'foreignKey' => 'away_team_id')
);
我的问题是,我无法在单个阵列中自动检索球队的主客场比赛。也就是说,检索到的匹配在单独的HomeMatch和AwayMatch数组中返回,这会导致排序困难
我尝试了以下方法:
var $hasMany = array(
'Match' => array('foreignKey' => array('home_team_id', 'away_team_id'))
);
…没有运气
有没有关于如何将这两个外键组合成一个关系的想法
谢谢,Ben它们以单独的数组返回,因为排序代表不同的模型(在这个特殊情况下,模型是相同的) 您可能应该构建一个helper方法来检查检索到的数据(在模型对象或单独的helper类中)并“展平”它。然后你就可以把它分类了
Ken.一个定制的finderQuery应该做到以下几点:
public $hasMany = array(
'Match' => array(
'className' => 'Match',
'foreignKey' => false,
'finderQuery' => 'SELECT *
FROM `matches` as `Match`
WHERE `Match`.`home_team_id` = {$__cakeID__$}
OR `Match`.`away_team_id` = {$__cakeID__$}'
)
);
我遇到了一个类似的问题,我没有创建
finderQuery
,而是使用了conditions
操作符,效果非常好
public $hasMany = array(
'Match' => array(
'className' => 'Match',
'foreignKey' => false,
'conditions' => array(
'OR' => array(
array('Match.home_team_id' => '{$__cakeID__$}'),
array('Match.away_team_id' => '{$__cakeID__$}')
)
),
)
);
@deceze任何CakePHP 3.x解决方案。任何CakePHP 3.x解决方案。