pderas / archivalist
v2.2.0
2023-03-09 15:30 UTC
Requires
- php: ^7.3|^8.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
- staudenmeir/eloquent-json-relations: ^1.1
Requires (Dev)
- orchestra/testbench: ^5.0
- pestphp/pest: ^0.2.3
- phpunit/phpunit: ^9.0
README
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)。有关更多信息,请参阅 许可证文件。