CakePHP - HABTM多个记录到同一模型

时间:2013-11-02 23:03:06

标签: php mysql database cakephp relationship

我正在尝试使用CakePHP中的HABTM关联将同一模型中的多个记录连接到另一个模型中的一个记录。

我试图关联的模型是User和Bet。用户模型是相当标准的,困难的是投注模型。投注记录除其他外还包括ID,以及user_1_id和user_2_id的列。每次下注都有两个参与者。

起初我认为将这两个存储在投注表中的同一记录中会很好,在用户模型中有一个简单的hasMany关联,以及一个查找器查询,因为我有两个外键:

public $hasMany = array(
    'Bet' => array(
        'className' => 'Bet',
        'foreign_key' => false,
        'finderQuery' => 'SELECT *
                            FROM `bets` as `Bet`
                            WHERE `Bet`.`user_1_id` IN ({$__cakeID__$})
                            OR `Bet`.`user_2_id` IN ({$__cakeID__$})',
    ),

然而,正如我所说,我遇到了一些困难,似乎这种关系只是在一个方向上工作(即我在使用个人投注时可以查看用户详细信息,但在与用户合作时我无法与之关联打赌细节)。

所以现在我相信我需要一个HABTM关系,有一个连接表,我不确定的是我将如何使它能够存储同一模型的多个记录,以及另一个模型之一,在链接表中。

这让我头疼,所以任何外界的观点或建议确实会有所帮助, 谢谢!

1 个答案:

答案 0 :(得分:0)

我自己设法解决了这个问题。看来,我的联想都错了。 我在蛋糕书中偶然发现了这个:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#multiple-relations-to-the-same-model

我不确定我之前没有意识到这一点,因为我在我的应用程序的其他地方使用完全相同的关联来处理关注者系统。关键是使用模型的别名,正如它在指南中详细解释的那样。

希望这将有助于将来帮助其他人!