Model 多表数据分布的Kohana模型

Model 多表数据分布的Kohana模型,model,kohana,data-modeling,Model,Kohana,Data Modeling,我正在建立一个数据库驱动的网站与科哈纳,我需要能够跟踪修订。因此,我在两个表格中的各个页面后面有数据。第一个是我用来跟踪所有站点内容的通用实体表。它包含基本信息:资源uid、uri别名、创建用户、创建日期和发布用户,以及内容模型。修订表包含修订id、资源uid(作为FK)、标题、页面内容、修订创建者、修订日期和发布审批人 该站点将按资源uid或uri别名查找页面,并返回最新发布的修订版。但是,从uri中,用户可以通过在uri中包含一个日期上限或一个-#to roll back#修订,将页面回滚到

我正在建立一个数据库驱动的网站与科哈纳,我需要能够跟踪修订。因此,我在两个表格中的各个页面后面有数据。第一个是我用来跟踪所有站点内容的通用实体表。它包含基本信息:资源uid、uri别名、创建用户、创建日期和发布用户,以及内容模型。修订表包含修订id、资源uid(作为FK)、标题、页面内容、修订创建者、修订日期和发布审批人

该站点将按资源uid或uri别名查找页面,并返回最新发布的修订版。但是,从uri中,用户可以通过在uri中包含一个日期上限或一个-#to roll back#修订,将页面回滚到早期修订

因此,页面控制器将接收资源uid、可能的日期和修订回滚计数,从模型中请求适当的记录,并将适当的记录传递给视图

创建新页面将更新两个表,更新页面将更新一个表,删除表将影响一个表


我应该创建两个模型,实体模型和修订模型吗?或者我应该有一个抽象实际结构的逻辑模型吗?

我有类似的问题,选择了两个模型的方式。 对不起,代码示例,我写它只是为了说明的目的。 为了避免数据库结构更改的问题,我只是从实体模型继承了修订模型,并重载了父字段(或者如果不需要它们,就取消它们)

看起来是这样的:

<?php

// file /application/classes/model/page.php
class Model_Page extends Jelly_Model {

    public static function fields() {
        return array(
            'id' => new Field_Primary(),
            'content' => new Field_String(),
            'author' => new Field_BelongsTo(array(
                'foreign' => 'user',
                'column' => 'author_id'    
            )),
            'creation_date' => new Field_Integer(),
            'uri' => new Field_String()

        );
    }

    //here we init the model, using previously defined static method
    public static function initialize(Jelly_Meta $meta){
        $meta->table('pages')->fields(self::fields());
    }

}

// file /application/classes/model/page/draft.php
class Model_Page_Draft extends Model_Page {
    public static function initialize(Jelly_Meta $meta) {
        //here we inherit all the parent models' fields 
        //to skip the dirty work
        $fields = parent::fields();
        //then we overload model propertires
        //with fields relevant to draft model
        $fields['rev_id'] = new Field_Integer();
        //and choose other table to work with
        $meta->table('page_draft')->fields($fields);


    }
}

查看ORM_版本的类:。这有帮助吗