我只是Kohana ORM的新人,所以我的问题可能对专业人士来说有点傻,但是...... :)
我有一些ORM模型,它们都有一些相同的方法,如:
public function items_order_by_id($reverse = false)
{
if($reverse) return $this->order_by($this->_primary_key, 'desc')->find_all();
else return $this->order_by($this->_primary_key, 'asc')->find_all();
}
OR
public function get_form()
{
$result = array();
foreach($this->_table_columns as $key => $value)
{
if($value['form']) $result[$key] = $this->_prefix.'_'.$key;
}
return $result;
}
如果我要添加新模型,我必须复制所有类似的方法,如果我想修改任何方法,我必须修改所有文件。我知道对象编程有继承,但是当我试图扩展Kohana_ORM时,我得到例外:
Model_Comment类中不存在comment_id
属性
所有其他特性也不存在。
是否有可能拥有包含这些方法的父模型?
答案 0 :(得分:0)
是的,这是可能的。您只需要确保编写函数,以便所有其他模型可以使用它们。
您很可能正在为正在运行的模型设置不存在的变量。这就是为什么它会抛出错误。
这也有点偏离,但你应该看看AutoModeler。如果你想要一个灵活的模型系统。 https://github.com/zombor/Auto-Modeler
它具有与ORM大致相同的功能,但使扩展更容易。
答案 1 :(得分:0)
哦,这绝对是愚蠢的。 我刚刚覆盖_ 构造函数并忘记了父:: _construct()。
所以问题解决了,现在一切都好。
很抱歉:)