Kohana 3 ORM:构造函数“加载后”

时间:2010-09-01 23:50:21

标签: php orm kohana

在Kohana 3的ORM中是否有任何方法可以在模型中运行一大块代码,但只有在从数据库加载该模型之后?一个简单的例子是必需的has_one关系。

   ORM::factory('user')->where('name', '=', 'Bob')->find();

现在如果所有用户都必须拥有其他属性,那么如果Bob不存在,则必须创建它?现在,在这一行运行的地方,我正在检查空主键,并指示模型添加该关系,如果是这样的话。但有没有办法让模型完成它?构造函数的问题是模型可以在从DB填充之前构造为空,如本示例中所示,因此我不希望这样。

2 个答案:

答案 0 :(得分:3)

尝试重载模型中的find()方法:

class Model_User extends ORM {

    public function find($id = NULL) {
        $result = parent::find($id);
        if (!$result->loaded()) {
            // not found so do something
        }
        return $result;
    }

}

答案 1 :(得分:3)

只需创建所需逻辑的模型方法:

public function get_user($username)
{
    $this->where('name', '=', $username)->find();
    if ( ! $this->_loaded)
    {
        // user not found
    }
    else
    {
        // user exists, do something else
    }
    // make it chainable to use something like this:
    //   echo ORM::factory('user')->get_user('Bob')->username;
    return $this;
}