model - KO3 : Pretend properties on a Kohana_ORM Model

标签 model kohana-3 kohana-orm

假设我有一个非常简单的模型,如下所示:

class Model_Person extends ORM
{
 /*
     CREATE TABLE `persons` (
   `id` INT PRIMARY KEY AUTO_INCREMENT,
   `firstname` VARCHAR(45) NOT NULL,
   `lastname` VARCHAR(45) NOT NULL,
   `date_of_birth` DATE NOT NULL,
  );
 */
}

有什么方法可以添加带有全名的假装属性吗?

例如,我可以这样做:

$person = ORM::factory('person', 7);
echo $person->fullname;

而不是这个:

$person = ORM::factory('person', 7);
echo $person->firstname.' '.$person->lastname;

另一个示例是 is_young 属性,该属性将计算人的年龄并在年龄低于特定数字时返回 true。

最佳答案

您可以使用“神奇”__get() 方法,如下所示:

public function __get($column)
{
    switch($column)
    {
        case 'fullname' : 
            return $this->firstname.' '.$this->lastname;

        case 'is_young' :
            // calculate persons age
    }
    return parent::__get($column);
}

或者您可以创建其他方法,例如 fullname()age() (对我来说似乎更好)。

关于model - KO3 : Pretend properties on a Kohana_ORM Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669513/

相关文章:

kohana-3 - Kohana 3.1 ORM : How to make 'where ... in' clause

php - Kohana - session 数据库

php - Kohana 与 AJAX 获取请求

php - 无法连接到 Kohana 中的远程 MySql 服务器

kohana-3 - 表未加入 Kohana 3.1 ORM

mysql - Kohana DB 插入前最后一次插入 ID

ruby-on-rails - 设置设备管理员角色

ruby-on-rails - rails : possible to reference multiple rows belonging to model 1 in a single row in model 2?

ruby-on-rails - 如何在 Rails 中将一个模型的内容分配给另一个模型?

php - 遍历4个表时数据不一致