snowpenguinstudios / laravel-model-status
此Laravel包允许在任何Laravel模型中实现状态功能。它利用多态关系。
v1.1.0
2021-10-18 01:46 UTC
Requires
- php: ^7.3|^8.0
Requires (Dev)
- brianium/paratest: ^6.3
- nunomaduro/collision: ^5.9
- orchestra/testbench: ^6.21
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.10
This package is auto-updated.
Last update: 2024-09-26 19:24:05 UTC
README
此Laravel包允许在任何Laravel模型中实现状态功能。它利用多态关系。包的功能包括
- 为任何具有
status_id
字段的模型设置和更新状态。 - 将状态更改历史作为状态更新存储。
- 能够将状态分配给特定模型。状态可以适用于所有模型或单个模型。
安装
您可以通过composer安装此包
composer require snowpenguinstudios/laravel-model-status
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="SnowPenguinStudios\LaravelModelStatus\LaravelModelStatusServiceProvider" --tag="laravel-model-status-migrations" php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="SnowPenguinStudios\LaravelModelStatus\LaravelModelStatusServiceProvider" --tag="laravel-model-status-config"
这是已发布配置文件的内容
return [
];
模型设置
将status_id添加到模型表
Schema::table('table-name', function (Blueprint $table) { $table->foreignId('status_id'); });
将HasStatus特质添加到模型
use SnowPenguinStudios\LaravelModelStatus\Traits\HasStatus; class ModelName extends Model { use HasStatus; ... }
用法
与状态模型一起工作
以下属性允许进行批量赋值: model
、name
、description
、is_default
、is_active
和order
。
创建全局状态
use SnowPenguinStudios\LaravelModelStatus\Models\Status; $status = Status::create([ 'name' => 'New', 'is_active' => true ]);
创建新的模型特定状态
use SnowPenguinStudios\LaravelModelStatus\Models\Status; $status = Status::create([ 'name' => 'New', 'model' => ModelName::class, 'is_active' => true ]);
将状态分配给模型
... $model->status_id = $status->id; ... $model->save();
OR
// This will work for create() as well... $model->update([ ... 'status_id' => $status->id, ... ]);
获取模型的可用状态
提供一个包含模型所有状态的数组(包括未分配给模型的状态)
$availableStatuses = DataModdel::availableStatuses();
提供模型默认状态(请注意,如果模型特定和非模型特定状态都有默认值,则模型特定将默认)
$defaultStatus = DataModdel::defaultStatus();
能够按状态顺序排序
默认顺序将是升序
$orderedStatuses = Status::order()->get();
按order字段升序排序。
$orderedStatuses = Status::order('asc')->get();
按order字段降序排序。
$orderedStatuses = Status::order('desc')->get();
按特定模型排序
$orderedStatuses = Status::where('model', DataModel::class)->order()->get();
OR
$orderedAscStatuses = DataModel::availableStatuses('asc'); $orderedDescStatuses = DataModel::availableStatuses('desc');
获取模型状态信息
获取模型当前状态
$model->status; // Returns the status model object
获取模型状态更新
$model->status_updates; // Returns a Collection of status update model
获取模型最新状态更新
$model->latestStatusUpdate(); // Returns the latest, in sequence, status update model object.
未来功能列表
- 状态排序
- 将状态分配给多个模型
- UI界面为状态模型提供CRUD功能
测试
composer test
变更日志
请参阅变更日志了解最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。