When generating a date/time for saving to a MySQL database, I’ve always tended to generate it with the PHP date method (
date('Y-m-d H:i:s')). However, using CakePHP 3, with dateTime validation set on the field, the date/time would disappear during hydration of the entity, but without a validation error.
I still suspected that validation was the issue here, so started having a look at the validation method to try to work out what was going wrong. Before I got very far, I noticed that the datetime validation method validates any value that is a Cake DateTime object. Therefore, the simple solution is to create the date/time using Cake’s built-in Time class:
use Cake\I18n\Time; $datetime = Time::now();
Cake then happily saves the DateTime in the standard MySQL format.