Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
инвентаризация:dev:model:history [2024/02/26 04:23]
admin [Как добавить историю модели]
инвентаризация:dev:model:history [2025/05/15 12:26] (текущий)
admin
Строка 1: Строка 1:
-{{tag>DEV Инвентаризация history}}+{{tag>DEV Инвентаризация history model}}
 ====== Инвентаризация: DEV: Model History ====== ====== Инвентаризация: DEV: Model History ======
 Как нам вести историю изменения моделей. Как нам вести историю изменения моделей.
Строка 20: Строка 20:
   * функцию журналирования состояния с возможностью указания инициатора изменений   * функцию журналирования состояния с возможностью указания инициатора изменений
  
 +Для возможности отображения загруженного из журнала объекта через те же формы, журнальный объект должен мимикрировать под оригинал. Для этого целесообразно все вычисляемые параметры вынести в Trait и подключить трейты и к оригиналу и к журналу
 ++++ ++++
  
Строка 32: Строка 33:
  
 ====== Как добавить историю модели ====== ====== Как добавить историю модели ======
-==== Таблицы ====+===== Таблицы =====
 В самой модели должны быть поля В самой модели должны быть поля
   * updated_at (timestamp()) - время обновления модели   * updated_at (timestamp()) - время обновления модели
Строка 77: Строка 78:
 </code> </code>
  
-==== Модели ==== +===== Модели ===== 
-=== Исходная ===+==== Исходная ====
 Должна наследоваться от ArmsModel, тогда в процессе afterSave будет проверяться наличие класса истории, и если он есть, то история изменений будет сохранена Должна наследоваться от ArmsModel, тогда в процессе afterSave будет проверяться наличие класса истории, и если он есть, то история изменений будет сохранена
  
-== Атрибуты Ссылки ==+=== Атрибуты Ссылки ===
 надо, чтобы в оригинальной модели были доступны атрибуты с ID объектов с many-2-many и one-2-many обратными ссылками. Если это many-2-many ссылки, то они там уже объявлены через Behaviour. Для обратных ссылок one-2-many можно использовать тот же механизм, прописав эти поля в Behaviour many-2-many надо, чтобы в оригинальной модели были доступны атрибуты с ID объектов с many-2-many и one-2-many обратными ссылками. Если это many-2-many ссылки, то они там уже объявлены через Behaviour. Для обратных ссылок one-2-many можно использовать тот же механизм, прописав эти поля в Behaviour many-2-many
 <code php> <code php>
Строка 103: Строка 104:
 </code> </code>
  
-== Атрибут Name ==+=== Атрибут Name ===
 Должен быть, если ссылки на этот объект есть в истории других объектов Должен быть, если ссылки на этот объект есть в истории других объектов
 сойдет даже вычисляемый getName() сойдет даже вычисляемый getName()
  • инвентаризация/dev/model/history.1708921431.txt.gz
  • Последнее изменение: 2024/02/26 04:23
  • admin