Cakephp自动转换find()字段?

时间:2011-01-15 04:49:14

标签: php sql cakephp

在cake php中,我可以使用find()方法获取模型的字段。如果我希望将转换函数应用于字段,该怎么办?有没有办法直接完成这项任务?

假设我有一个名为RaceTime的模型,其字段为racerIdtimeMillis

 RaceTime
+------------+
| Field      |
+------------+
| id         |
| racerId    |
| timeMillis |
+------------+

timeMillis是一个int,用于指定比赛花费的时间(以毫秒为单位)。显然说比赛花了15651毫秒对人类读者来说并不是很有用,我希望将其转换成人类可读的格式。

有没有办法直接在find()?

中完成此任务

或者是在find()完成后循环结果的唯一选项吗?

2 个答案:

答案 0 :(得分:3)

使用Virtual Fields可以实现您的目标。

使用示例进行编辑:

var $virtualFields = array(
    'timeMillisHR' => 'FROM_UNIXTIME(Field.timeMillis)'
);

答案 1 :(得分:1)

假设您只想将timeMillis转换为秒,您可以使用 'fields'=> array('timeMillis / 1000','other_fields')其中'other_fields'表示您希望在查询中检索的其他字段。如果它比简单的数学运算和其他SQL函数更复杂,那么答案就是否。

如果在项目中这是一个足够普遍的转换,并且你无法在NumberHelper的TimeHelper中找到合适的方法,那么你可以轻松编写自己的帮助器。

你几乎必须遍历你想要转换的每个实例。