【问题标题】:Kohana 3.3 table structureKohana 3.3 表结构
【发布时间】:2013-06-13 11:26:47
【问题描述】:

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

【问题讨论】:

    标签: php kohana kohana-3


    【解决方案1】:

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

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

    表 users_locations,字段:user_id 和 location_id(当然都是索引)

    在你的模型中:

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

    在用户模型中反之亦然:

    protected $_has_many = array(
        'locations' => array(
            'model' => 'location'
            'through' => 'users_locations',
        ),
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多