我想创建一个具有未存储在数据库中的某些属性的模型。例如,我想在模型中维护一个“年龄”字段,但我只将生日信息存储在数据库中(一旦加载了DOB信息,我就可以计算“年龄”)。我尝试将一个简单的属性添加到模型扩展中,但据我所知,它被CakePHP忽略了。什么是实现这个目标的正确方法?
我是CakePHP的新手,如果我遗漏了一些明显的东西,请原谅我。
答案 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');