为什么我不能使用CakePHP的访问器将日期格式化为d-m-Y.

时间:2016-10-19 10:08:44

标签: cakephp-3.0

我在单个记录/ get上遇到了访问者的问题。

我的日期记录有价值' 2015-10-10'。

    //PatientsController.php
    $record = $patients->find()->first();
    debug($record->dob);die;
    //would print 19-10-2016 (today's date)

在我的实体/ Patient.php中         受保护的函数_getDob($ dob)         {             $ time = new Time($ dob);             返回$ time-> i18nFormat(' dd-MM-YYY');         }

如果我将$time->i18nFormat('dd-MM-YYY');更改为$time->i18nFormat('YYY-MM-dd');,则会显示' 2015-10-10',这是正确的,但不是我想要的格式。

问题是,为什么?

目前,我使用自定义finder和formatResults并将格式更改为d-m-y

    public function findPatients($query, $options) {
        return $query->formatResults(function($results) {
            return $results->map(function($row) {
                $tgl = new Time( $row['dob'] );
                $row['dob'] = $tgl->i18nFormat('dd-MM-YYY');
                return $row;
            });
        });
    }

仍然想知道为什么它不能在访问器中格式化。

1 个答案:

答案 0 :(得分:0)

你可能会 dd-MM-YYY 它应该是 dd-MM-yyyy 那么你的代码应该是

public function findPatients($query, $options) {
        return $query->formatResults(function($results) {
            return $results->map(function($row) {
                $tgl = new Time( $row['dob'] );
                $row['dob'] = $tgl->i18nFormat('dd-MM-yyyy');
                return $row;
            });
        });
    }

以下是Official Doc