Это старая версия документа!


Инвентаризация: DEV: Model History

Как нам вести историю изменения моделей.

Первоначальная задумка

Кандидаты на аудит

В самой модели должны быть поля

  • updated_at (timestamp()) - время обновления модели
  • updated_by (string(32)) - логин обновившего (т.к. логин может скакать между пользователями, которые на самом деле сотрудники, а не пользователи)
$this->addColumnIfNotExist('aces','updated_at',$this->timestamp(),true);
$this->addColumnIfNotExist('aces','updated_by',$this->string(32),true);

Создаем таблицу для модели истории
Там должны быть поля

  • master_id (integer()) - ссылка на оригинальную модель
  • updated_at (timestamp()) - отметка о времени записи изменения
  • updated_by (string(32)) - логин изменившего
  • (опционально) updated_comment (string()) - можно комментировать каждое изменение
  • changed_attributes (text()) - список полей изменившихся относительно прошлой записи (через запятую)

Все поля оригинальной модели нужно также добавить в том же виде (если не добавить, то их история не будет вестись)
Также (если) нужно добавить поля для many-2-many и обратных ссылок в виде (text()) полей. Туда будут складываться ID объектов связанных с моделью.
Например:

  • users_ids (text())
  • comps_ids (text())
$this->createTable('aces_history',[
	'id'=>$this->primaryKey(),
	'master_id'=>$this->integer(),
	'updated_at'=>$this->timestamp(),
	'updated_by'=>$this->string(32),
	'updated_comment'=>$this->string(),
	'changed_attributes'=>$this->text(),
 
	'comment'=>$this->string(),
	'notepad'=>$this->text(),
	'acls_id'=>$this->integer(),
	'users_ids'=>$this->text(),
	'comps_ids'=>$this->text(),
	'access_types_ids'=>$this->text(),
	'ips'=>$this->text(),
]);

надо, чтобы в оригинальной модели были доступны такие атрибуты. Если это many-2-many ссылки, то они там уже объявлены через Behaviour. Для обратных ссылок one-2-many можно использовать тот же механизм, прописав эти поля в Behaviour many-2-many

  • инвентаризация/dev/model/history.1708920770.txt.gz
  • Последнее изменение: 2024/02/26 04:12
  • admin