CakePHP新手问题:如何将非数据库属性添加到模型中?

时间:2009-10-04 18:23:28

标签: cakephp

我想创建一个具有未存储在数据库中的某些属性的模型。例如,我想在模型中维护一个“年龄”字段,但我只将生日信息存储在数据库中(一旦加载了DOB信息,我就可以计算“年龄”)。我尝试将一个简单的属性添加到模型扩展中,但据我所知,它被CakePHP忽略了。什么是实现这个目标的正确方法?

我是CakePHP的新手,如果我遗漏了一些明显的东西,请原谅我。

5 个答案:

答案 0 :(得分:9)

我是使用模型中的afterFind回调方法完成的。

答案 1 :(得分:3)

自从我处理Cake之后已经有一段时间了,但为什么不实现getAge()方法呢?

答案 2 :(得分:2)

如果您使用的是CakePHP 1.3,则可以使用“虚拟字段”: http://book.cakephp.org/view/1608/Virtual-fields [Cookbook 3.7.10]

[edit]它也适用于CakePHP 2.x: http://book.cakephp.org/2.0/en/models/virtual-fields.html

此方法的主要优点是虚拟字段已添加到模型中。这样,MVC原则得到了尊重。

示例(MySQL):

var $virtualFields = array(
    'age' => "YEAR(NOW()) - YourModelHere.dob"
);

答案 3 :(得分:0)

答案 4 :(得分:-1)

使用课程Cache

$parametrs = array('age'=>21, 'name'=>'aziz');
Cache::write('myOptions', $parameters);

Cache::read('myOptions');