kirillemko/yii2-activerecord-history

此包最新版本(2.1.2)的许可证信息不可用。

保存ActiveRecord模型更改历史

2.1.2 2024-08-22 05:18 UTC

This package is auto-updated.

Last update: 2024-09-22 05:26:28 UTC


README

安装

通过以下方式安装此扩展:通过composer

运行以下命令之一:

composer require kirillemko/yii2-activerecord-history

"kirillemko/yii2-activerecord-history": "*"

将以下内容添加到您的composer.json文件的要求部分。

运行迁移

php yii migrate --migrationPath=@vendor/kirillemko/yii2-activerecord-history/migrations

使用

行为允许编写模型更改历史。只需将其添加到模型中的behaviors方法即可

public function behaviors() {
    return [
        ...
        [ 'class' => ActiveRecordHistoryBehavior::class ]

以下配置参数可能可用:

Поставить в true, если при создании модели нужно записать все поля в историю. 
В противном случае пишется только сам факт создания модели
'saveFieldsOnInsert' => false

Массив полей, изменение которых не нужно писать.
Например при использовании 'created_at'
'ignoreFields' => []

Конфигурация отслеживаемых евентов. 
Можно отключить евент, если не нужно писать
'watchInsertEvent' => true,
'watchUpdateEvent' => true,
'watchDeleteEvent' => true

此外,行为还提供了一种获取更改历史的方法

$someModel->getChangesHistory($sortAsc = true);

将返回一个包含kirillemko\activeRecordHistory\models\ActiveRecordHistory对象的数组

在将对象转换为数组时,将添加两个额外的属性type_full_name和field_full_name,以便于在客户端使用。示例

{
    "id": 10,
    "user_id": 1,
    "type": 2,
    "model": "App\\domain\\ACL\\models\\AclGroupsPermissions",
    "model_id": "21",
    "field_name": "desc",
    "old_value": "Описание объекта",
    "new_value": "Новое описание объекта",
    "created_at": 1625908836,
    "field_full_name": "Описание",
    "type_full_name": "Редактирование"
}

在此对象中,field_full_name属性通过从目标模型的attributesLabel获取人类名称来实现

待办事项

为kirillemko\activeRecordHistory\models\ActiveRecordHistory对象添加额外的type_full_name属性,通过i18n而不是硬编码来实现

致谢

作者:Kirill Emelianenko

电子邮件:kirill.emko@mail.ru