Kohana ORM,扩展和父方法

时间:2011-05-27 10:12:16

标签: php orm object model kohana

我只是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属性

所有其他特性也不存在。

是否有可能拥有包含这些方法的父模型?

2 个答案:

答案 0 :(得分:0)

是的,这是可能的。您只需要确保编写函数,以便所有其他模型可以使用它们。

您很可能正在为正在运行的模型设置不存在的变量。这就是为什么它会抛出错误。

这也有点偏离,但你应该看看AutoModeler。如果你想要一个灵活的模型系统。 https://github.com/zombor/Auto-Modeler

它具有与ORM大致相同的功能,但使扩展更容易。

答案 1 :(得分:0)

哦,这绝对是愚蠢的。 我刚刚覆盖_ 构造函数并忘记了父:: _construct()。

所以问题解决了,现在一切都好。

很抱歉:)