0

我在 Kohana 3.3 中有一个简单的 crud 应用程序,其中包含几种不同类型的数据或模型。假设这些模型是:

  • 用户
  • 地点
  • 技能

我为这些模型中的每一个都有一个表格,但这些表格彼此之间没有任何关系。我一直在尝试定义与 ORM 的关系,但我仍然感到困惑。举个例子:

我有很多地方。每个位置都有许多用户。

我知道我可以用以下方式定义:

class Model_Location extends ORM {

    /**
     * A location has many users
     *
     * @var array Relationships
     */
    protected $_has_many = array(
        'users' => array('model' => 'user'),
    );

}

据我了解,我可以通过从用户表的行中引用父位置的 ID 来连接两者。但是,如果每个用户可以属于多个位置怎么办?我应该将序列化数据存储在外键中吗?我应该创建一个“查找表”吗?如果是这样,它应该是什么样子?

例如,我如何在数据库中查询某个位置以及所有附加到该位置的用户?ORM 甚至是用于此类事情的正确技术吗?

4

1 回答 1

2

您正在寻找through参数,请查看文档

您需要一个额外的表来存储两个模型的 id

users_locations,字段:user_idlocation_id(当然都被索引)

在你的模型中:

protected $_has_many = array(
    'users' => array(
        'model' => 'user'
        'through' => 'users_locations',
    ),
);

在用户模型中反之亦然:

protected $_has_many = array(
    'locations' => array(
        'model' => 'location'
        'through' => 'users_locations',
    ),
);
于 2013-06-13T11:41:59.407 回答