Захват первоначальной копии объектов Propel в doSelect - PullRequest
2 голосов
/ 10 октября 2011

Я использую Propel 1.6, и мне нужно создать версию всех таблиц в конкретной базе данных. У меня есть несколько таблиц, каждая из которых имеет таблицу версий, определенную в схеме (поэтому таблица 'role' имеет таблицу 'role_versionable' в качестве аналога управления версиями). При сохранении записи в 'role' я хотел бы скопировать существующую запись в role_versionable перед сохранением.

Это само по себе тривиально: я установил baseClass для всей схемы на собственный класс (который расширяет BaseObject), и все мои сгенерированные классы модели строк расширяют этот класс. В моей пользовательской процедуре сохранения я делаю новый выбор, а затем сохраняю его в таблицу версий. Однако я должен иметь возможность перехватывать doSelect [One] во всех классах строк, но я не хочу генерировать дочерние объекты для каждой таблицы в модели.

Поэтому мне интересно, есть ли способ, которым я могу подключиться к postSelect или автоматически вызываться после каждого doSelect, чтобы получить начальное состояние объекта после его выбора? Это тогда спасет меня от лишнего выбора, когда я приду к версии строки.

(Подробно: я делаю это нестандартным способом, так как мне нужно добавить дополнительные метаданные в таблицу версий, которые, как мне кажется, не поддерживает archive_behaviour.)

1 Ответ

1 голос
/ 01 ноября 2011

AFAIK нет способа использовать ловушку до или после вызова doSelect. Ваш лучший шанс - переопределить этот метод в вашем собственном классе и добавить хук самостоятельно. Я, вероятно, напишу свой собственный Peer Builder, чтобы сделать это.

William

...