Есть в модели поле "Дата", для него создал правило с описанием dateFormat "dd.mm.yyyy", правило работает нормально. Но при записи (обычный save) в БД (поле типа datetime) модель вопреки ожиданиям не учитывает заданный формат и не преобразовывает автоматически значение к формату, к принятому в мускуле. Есть ли решения, более изящные, чем ручная обработка поля в beforeSave?
Я бы на вашем месте использовал таймстэмп для поля даты. Оно имеет формат "дд-мм-гггг чч-мм-сс". При этом если кидаешь в него только часть даты "дд-мм-гггг" - то остальное оно делает нулями. Поэтому проблем в преобразовании не будет. А при редактировании этого поля вы можете просто отсекать ту часть которая отвечает за время.
Tima, спасибо, я надеялся, что есть более красивое решение. И мне кажется, такие вещи логичнее описывать в beforeSave.
Zolter, timestamp проблему не решает, автоматического преобразования "dd.mm.yyyy"=>"yyyy-mm-dd" не происходит. Странно как-то, модели ведь известен используемый мной формат (благодаря правилу), известен тип поля таблицы БД, ну чего проще преобразовать автоматически?
Если требуется искать в базе по диопазонам, или к примеру найти все даты за конкретный месяц всех годов - то намного удобнее работать не с интом. Так что тут зависит от того для каких целей используется поле. Если чисто как информация - тогда без разницы инт там или дата ИМХО
Это лишние движения искать интервал в php и передавать в запрос, если в самом sql есть штатные функции работы с таймстэмпом и дататамймом для вычисления интервала и тп