Doctrine — шифрование с помощью прослушивателей dql

Я пытаюсь зашифровать определенные поля базы данных, добавив вызов mysql AES_ENCRYPTAES_DECRYPT) с помощью Doctrine DQL Hooks.

для SQL SELECT у меня есть preDqlSelect() в моем классе Doctrine_Record_Listener, который проходит через каждый параметр в полях выбора и добавляет AES_DECRYPT() для зашифрованных полей.

Но похоже, что вызов save() в классе модели доктрины вызывает только прослушиватель preSave() и не вызывает никаких слушателей preDql*.

Может ли кто-нибудь предложить способ заставить это работать или лучший способ сделать это?

Спасибо


person rasp    schedule 21.10.2010    source источник


Ответы (1)


Чтобы эти обратные вызовы dql проверялись, вы должны явно включить их. Поскольку это добавляет небольшие накладные расходы для каждого запроса, по умолчанию оно отключено.

$manager->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);

Прослушиватели событий Doctrine 1.2

person ksimon    schedule 10.05.2011