pderas/archivalist

v2.2.0 2023-03-09 15:30 UTC

This package is auto-updated.

Last update: 2024-09-09 18:54:02 UTC


README

Latest Version on Packagist Total Downloads

Archivalist 是一个轻量级包,旨在简化 Laravel 模型的存档更改。

安装

您可以通过 composer 安装此包。

composer require pderas/archivalist

用法

简单地将 Pderas\Archivalist\Traits\HasArchives 添加到您希望存档的任何模型中。

use Pderas\Archivalist\Traits\HasArchives;
class Post extends Model {
    use HasArchives;
}

如果您希望某些列始终被存档,可以通过向模型添加 archived 属性或方法来实现。

use Pderas\Archivalist\Traits\HasArchives;
class Post extends Model {
    use HasArchives;

    protected $archived = [
        'updated_at'
    ];

    // Alternatively...
    protected function archived() {
        return [
            'updated_at' => $this->getOriginal('updated_at'),
            'is_archived' => true
        ];
    }
}

存档可以被“重新激活”到原始模型的原始状态。

$user->company = 'Pderas';
$user->save();

$archive = $user->archives()->first(); // => \Pderas\Archivalist\Models\Archive
$original = $archive->rehydrate(); // => \App\User

可以使用 ->getHistory() 获取包含模型完整历史的 Collection。

$user->getHistory(); // A user model for every state the user was in

不支持批量赋值,在这种情况下,您必须使用以下解决方案。

//  Do not do
Post::where('status','open')
    ->update(['status','closed']); // This will fail

//  Do this instead
Archivalist::proxy(Post::query())
    ->where('status','open')
    ->update(['status','closed']);

已添加对 beforeArchive 的支持。在实现 HasArchives 特性的任何模型上实现 beforeArchive 方法,以在执行主要存档逻辑之前运行任何额外逻辑。

// SomeModel which uses HasArchives

public function beforeArchive() {
    //  Put logic here to be ran before the primary archives logic is ran
    //  useful for automating tasks such as always writing user->id, etc
}

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

安全

如果您发现任何安全相关的问题,请通过电子邮件 reed.jones@pderas.com 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件