Cakephp, PHP

Save datetime to database Cakephp3 từ string

Cakephp rất tiện dụng khi tự động tạo cấu trúc form cho bạn khi bạn save bản ghi vào database.
Tuy nhiên, đôi lúc nó sẽ khiến bạn quên đi cấu trúc định dạng cần save.
Ở bài này nói đến cấu trúc datetime.

Trước hết nói về cấu trúc form khi save vào của cakephp3:

array(
‘year’ => $date->format(‘Y’),
‘month’ => $date->format(‘m’),
‘day’ => $date->format(‘d’),
‘hour’ => ‘0’,
‘minute’ => ‘0’,
);

Với trường hợp ta lấy ra 1 bản ghi rồi lưu lại thời gian không thông qua form.
Ví dụ như có trường expired của 1 entity. Chuỗi string nhập vào chẳng hạn là 20160101.
Khi đó ta không thể dùng $entity->expired = ‘20160101’;
Ta sẽ phải chuyển chuỗi ‘20160101’ sang dạng Time của cakephp3.
Cách làm:
//trên đầu file, sau dòng khai báo namespace ta thêm dòng:
[…]
use Cake\I18n\Time;
[…]

$time = Time::parseDateTime($expired, ‘yyyyMMdd’);// yyyyMMdd là định dạng của chuỗi nhập vào
$entity->expired = $time;