Model 多表数据分布的Kohana模型
我正在建立一个数据库驱动的网站与科哈纳,我需要能够跟踪修订。因此,我在两个表格中的各个页面后面有数据。第一个是我用来跟踪所有站点内容的通用实体表。它包含基本信息:资源uid、uri别名、创建用户、创建日期和发布用户,以及内容模型。修订表包含修订id、资源uid(作为FK)、标题、页面内容、修订创建者、修订日期和发布审批人 该站点将按资源uid或uri别名查找页面,并返回最新发布的修订版。但是,从uri中,用户可以通过在uri中包含一个日期上限或一个-#to roll back#修订,将页面回滚到早期修订 因此,页面控制器将接收资源uid、可能的日期和修订回滚计数,从模型中请求适当的记录,并将适当的记录传递给视图 创建新页面将更新两个表,更新页面将更新一个表,删除表将影响一个表Model 多表数据分布的Kohana模型,model,kohana,data-modeling,Model,Kohana,Data Modeling,我正在建立一个数据库驱动的网站与科哈纳,我需要能够跟踪修订。因此,我在两个表格中的各个页面后面有数据。第一个是我用来跟踪所有站点内容的通用实体表。它包含基本信息:资源uid、uri别名、创建用户、创建日期和发布用户,以及内容模型。修订表包含修订id、资源uid(作为FK)、标题、页面内容、修订创建者、修订日期和发布审批人 该站点将按资源uid或uri别名查找页面,并返回最新发布的修订版。但是,从uri中,用户可以通过在uri中包含一个日期上限或一个-#to roll back#修订,将页面回滚到
我应该创建两个模型,实体模型和修订模型吗?或者我应该有一个抽象实际结构的逻辑模型吗?我有类似的问题,选择了两个模型的方式。 对不起,代码示例,我写它只是为了说明的目的。 为了避免数据库结构更改的问题,我只是从实体模型继承了修订模型,并重载了父字段(或者如果不需要它们,就取消它们) 看起来是这样的:
<?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_版本的类:。这有帮助吗