Kohana 3.3表结构

时间:2013-06-13 11:26:48

标签: php kohana kohana-3

我在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甚至是用于此类事情的正确技术吗?

1 个答案:

答案 0 :(得分:2)

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

您需要一个额外的表来存储两个模型的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',
    ),
);