Подскажите, что делаю не так?
Из формы отправляю дату, например 24.04.2017, в базе храню даты в int(11). Ситуация не понятная, в beforeSave привожу дату к UNIX, а в базу попадает 0. Причем это при create, при update все как нужно.
Form: input → date → d.m.Y
Model:
beforeSave
Код: Выделить всё
var_dump($model->date); // 27.04.2017
$model->date = strtotime($model->date)
var_dump($model->date); // 1493154000
Mysql → date int(11) → 0
AfterSave показывает 1493154000, а в базу пишется 0.
Если сделать в beforeSave так:
Код: Выделить всё
$model->date = 1493154000;
То всё запишется нормально.
Так
Код: Выделить всё
$model->date = (int) strtotime($model->date)
Лог Mysql query показывает `date`=0;
Если дату сделать strtotime в afterValidate, то всё как надо.
Пробовал вардампить в activeRecord перед execute (:y7 => 1493154000) и после afterSave (date => 1493154000), там все нормально.
Если делать не через strtotime(), а через new Date(), например, то выкидывает исключение PHP, что передан boolean.