在cake php中,我可以使用find()方法获取模型的字段。如果我希望将转换函数应用于字段,该怎么办?有没有办法直接完成这项任务?
假设我有一个名为RaceTime
的模型,其字段为racerId
和timeMillis
RaceTime
+------------+
| Field |
+------------+
| id |
| racerId |
| timeMillis |
+------------+
timeMillis是一个int,用于指定比赛花费的时间(以毫秒为单位)。显然说比赛花了15651毫秒对人类读者来说并不是很有用,我希望将其转换成人类可读的格式。
有没有办法直接在find()?
中完成此任务或者是在find()完成后循环结果的唯一选项吗?
答案 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中找到合适的方法,那么你可以轻松编写自己的帮助器。
你几乎必须遍历你想要转换的每个实例。