snowpenguinstudios/laravel-model-status

此Laravel包允许在任何Laravel模型中实现状态功能。它利用多态关系。

v1.1.0 2021-10-18 01:46 UTC

This package is auto-updated.

Last update: 2024-09-26 19:24:05 UTC


README

Latest Version on Packagist Total Downloads Package Contributors Package License

GitHub Tests Action Status GitHub Code Style Action Status Package Last Commit

此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;
    
    ...
}

用法

与状态模型一起工作

以下属性允许进行批量赋值: modelnamedescriptionis_defaultis_activeorder

创建全局状态

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)。请参阅许可证文件以获取更多信息。