Доктрина 1.2: события с устаревшими инициаторами вызывают проблемы с версионным поведением - PullRequest
0 голосов
/ 20 июля 2011

У меня такое чувство, что здесь может быть что-то, чего мне не хватает, но я все равно пойду сюда.

Учтите это: у меня есть класс 'Booking', в котором есть поле user_id и поведение Versionable, и я запускаюследующий код:

$booking = new Booking();

$booking->user_id = 1;

$booking->isValid();

$booking->user_id = 2;

$booking->save();

В результате правильная запись будет вставлена ​​в таблицу бронирования.НО запись, вставленная в таблицу booking_version, устарела!Для user_id установлено значение 1, поскольку данные извлекаются из инициатора событий, который был создан во время первого вызова isValid ().Кроме того, поле id установлено в 0 по той же причине (что означает, что запись версии не может быть связана с бронированием)

Я могу обойти эту проблему, вызвав $ booking-> clearInvokedSaveHooks () до того, какsave (), но я действительно не хочу этого делать, потому что я не хочу снова запускать все свои хуки сохранения при сохранении.

Есть ли лучший способ обойти это?

1 Ответ

0 голосов
/ 26 августа 2011

Здесь нечего обойти.Versionable поведение предназначено для хранения предыдущих значений записи.

Если вы хотите сохранить каждое временное состояние объекта - вам придется save каждый раз.

...