Архивация всего что есть

Духовность™

Продвинутый новичок
Архивация всего что есть

Привет. Вопрос такого плана - кто-нибудь делает архивацию записей, которые когда-либо попадают в базу? Вот, например, ситуация - менеджер взял и изменил новость на сайте, сделав за день 5 правок. Нужно вернуться к одной из них, тупо сделав бэкап.

Если кто делал, как реализовывается эта система? Я так понимаю, что нужно иметь отдельную таблицу, что бы PK был не как основной ключ записи сущности?
 

tz-lom

Продвинутый новичок
да просто сделай таблицу с логом ,где помимо всех полей архивируемой таблицы будут поля с датой создания/изменения записи и именем пользователя,а при создании/изменении записей вноси из их и в таблицу лога тоже
 

Духовность™

Продвинутый новичок
да, спасибо, хороший совет насчет дат и id_user. интересно, а модкль надо каким образом делать для таких таблиц? на базе модели основных сущностей?..
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
или Патч, который накладывается на Новость, или в Новость добавь поле "версия" ("дата" уже есть) - даже не "на базе"
 

tz-lom

Продвинутый новичок
ну,или унаследовать если позволяет ОРМ ,или можно попробовать хранить сериализованные модели логируемых записей,но тогда теряем вкусные поиски по логам и получаем кучу не совместимостей после обновления кода xD
 

mustafa

Новичок
triumvirat
посмотри как сделано это в друпале, там есть такое revision, по таблицам прошвырнись все понятно будет
 

AmdY

Пью пиво
Команда форума
itprog
не, ИМХО, вторая версия доктрины писалась под сильнодействующими наркотическими и психотропными препаратами.

-~{}~ 30.10.10 18:09:

фу, а как ублюдочно в ней выглядят неймспэйсы
PHP:
 "SELECT v FROM DoctrineExtensions\Versionable\ResourceVersion v INDEX BY v.version ".
            "WHERE v.resourceName = ?1 AND v.resourceId = ?2 ORDER BY v.version DESC");
 

itprog

Cruftsman
неймспейсы в пхп 5.3 все так выглядят %)

приходится еще писать \\ в строках чтобы раскрашивалось правильно


а вторая по-моему, наоборот, стала проще и правильнее
 

korpus

злой бобёр
Автор оригинала: tz-lom
да просто сделай таблицу с логом ,где помимо всех полей архивируемой таблицы будут поля с датой создания/изменения записи и именем пользователя,а при создании/изменении записей вноси из их и в таблицу лога тоже
И надо сделать ограничение на количество хранимых записей. При превышении этого количества должна затираться самая старая запись.
 
Сверху