Рассмотрим следующую схему данных:
Employee:
columns:
name: string(255)
activeSince: date
activeUntil: date
Я работаю в системе, в которой запросы динамически создаются конечным пользователем в процессе выбора полей, компараторов и значений. Мне бы хотелось, чтобы в этой таблице было вычисленное поле active
, которое истинно, если текущая дата находится между двумя полями даты.
Это, конечно, было бы легко, если бы реализация функции получения в PHP была опцией, но это не потому, что
- Мне нужно отфильтровать базу данных, используя это поле
- Таблица содержит огромное количество записей, и выбор всех из них и последующая фильтрация PHP слишком сложны. Фильтрацию необходимо выполнить на сервере базы данных.
Я знаю, что это можно сделать с помощью настройки DQL в PHP, но это тоже не вариант, потому что конечные пользователи не могут писать дополнительный код. В идеале, я надеюсь на конструкцию YAML как
Employee:
columns:
name: string(255)
activeSince: date
activeUntil: date
active: calculated
type: boolean
dql: CURDATE() BETWEEN activeSince AND activeUntil
CURDATE () и BETWEEN - это функции MySQL, которые должны нормально работать в DQL.
Есть ли что-нибудь подобное в Учении 1.2?