SQL-вычисления как поля только для чтения в Doctrine 1.2 - PullRequest
2 голосов
/ 03 августа 2011

Рассмотрим следующую схему данных:

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?

...