我可以在两个表之间建立两个看似无关的关联吗?

时间:2013-01-14 08:42:22

标签: mysql sql database cakephp

我正在开发一个简历应用程序,并使用CakePHP树行为创建了一个名为areas的表。在这张表中,我有一堆国家和城市。

此表的最初目的是允许用户指定他们有兴趣在简历中工作的区域。这非常简单,我在usersareas之间创建了一个HABTM关系来处理这个问题。

但是,我需要做的下一件事是允许用户指定它们的来源。当然,我可以创建一个与areas相同的新表,并将其称为不同的东西,但这似乎有点浪费和低效。

所以,我想知道users表和areas表之间是否有两个完全不同的关联?

换句话说,users表将拥有并且属于多个areas(用于指定他们有兴趣在世界上工作的所有区域的用户)但它也会有一个area(用户指定他们来自哪个国家)。

我无法想象如何根据CakePHP惯例正确设置模型 - 或者尝试这个是否是一个好主意 - 所以我会感激任何人都可以给出的指示。

我也很高兴听到人们的意见,即使答案不是CakePHP特定的,因为这更像是一个数据库问题而不是其他任何东西。

1 个答案:

答案 0 :(得分:0)

您可以指定所需的任何关联。

例如在您的用户模型中:

/**
 * @see Model::$hasAndBelongsToMany
 */
    public $hasAndBelongsToMany = array(
        'Area' => array(
            'className' => 'Area',
            'joinTable' => 'user_areas',
            'foreignKey' => 'user_id',
            'associationForeignKey' => 'area_id',
        ),
    );

/**
 * @see Model::$hasOne
 */
    public $belongsTo = array(
        'Farea' => array(
            'className' => 'Area',
            'foreignKey' => 'farea_id',
        ),
    );