2016-11-25 4 views
3

Как такие входы могут быть переведены в поле DATE в БД?Yii2. Многие входы для одного поля Model/DB

enter image description here

Заказчик настаивает на таком пути ввода пользователем дата рождения. Сначала моя мысль заключалась в том, чтобы просто конкатрировать в одном поле в beforeValidate, но после этого входы не смогут отображать дату, которая была введена, из БД. Как избежать такого ограничения?

ответ

3
  1. Добавить эти 3 поля в качестве виртуальных свойств в классе модели.
  2. В beforeValidate() установить значение birthdate с помощью комбинации из 3 виртуальных полей в форме.
  3. Добавить afterFind() в класс модели, где значение сохраненного в DB birthdate свойство используется для установки значений трех виртуальных свойств.
  4. Теперь форма правильно хранит 3 значения полей, а комбинированная дата сохраняется в БД.
+0

Благодарим за ответ. Под «виртуальными полями» вы подразумеваете добавление полей в массив «rules», но не создание реального поля в классе модели? В моем случае '[['birthdate_month', 'birthdate_day', 'birthdate_year'], 'string']' –

+0

К правилам и самой модели, например 'public $ birthdate_month;' – Bizley

 Смежные вопросы

  • Нет связанных вопросов^_^