lemax10 / laravel-enums
Laravel 简单枚举实现。具有将 Eloquent 模型进行类型转换和通过语言文件进行标签翻译的能力。
v1.5.6
2024-03-18 13:18 UTC
Requires
- php: >=7.1
- illuminate/console: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^v7.0|^8.0|^9.0|^10.0
- illuminate/database: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^v7.0|^8.0|^9.0|^10.0
- illuminate/support: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^v7.0|^8.0|^9.0|^10.0
- illuminate/validation: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^v7.0|^8.0|^9.0|^10.0
- myclabs/php-enum: ^1.7
Requires (Dev)
- phpunit/phpunit: ~4.8.36 || ^5.7.27 || ^6.5.8
README
此包仍在开发中,请勿使用
Laravel 枚举
此包基于 myclabs/php-enum 的枚举实现。
示例模型
use App\Enums\ExampleStatusEnum; use Illuminate\Database\Eloquent\Model; use LeMaX10\Enums\Traits\ModelEnums; /** * Class ExampleModel * @package App */ class ExampleModel extends Model { use ModelEnums; /** * @var array */ protected $enums = [ 'status' => ExampleStatusEnum::class ]; }
示例状态枚举
use LeMaX10\Enums\Enum; /** * Class ExampleStatusEnum * @package App\Enums */ final class ExampleStatusEnum extends Enum { /** * */ private const FOO = 'foo'; /** * */ private const BAR = 'bar'; }
示例可翻译枚举
use LeMaX10\Enums\Enum; use LeMaX10\Enums\Contracts\Translatable; /** * Class ExampleStatusEnum * @package App\Enums */ final class ExampleStatusEnum extends Enum implements Translatable { /** * */ private const FOO = 'foo'; /** * */ private const BAR = 'bar'; /** * Translatable value * @return string */ public function getTransValue(): string { return trans('enum.'. $this->value); } }
请求验证规则
<?php namespace App\Http\Requests; use App\Enums\ExampleStatusEnum; use Illuminate\Http\Request; class ExampleRequest extends Request { public function rules(): array { return [ 'status' => 'required|enum:'. ExampleStatusEnum::class ]; } }
或
<?php namespace App\Http\Requests; use App\Enums\ExampleStatusEnum; use LeMaX10\Enums\Rules\EnumValue; use Illuminate\Http\Request; class ExampleRequest extends Request { public function rules(): array { return [ 'status' => ['required', new EnumValue(ExampleStatusEnum::class)] ]; } }
或
<?php namespace App\Http\Requests; use App\Enums\ExampleStatusEnum; use Illuminate\Http\Request; class ExampleRequest extends Request { public function rules(): array { return [ 'status' => ['required', ExampleStatusEnum::rule()] ]; } }
安装
您可以通过 composer 安装此包
composer require LeMaX10/laravel-enums
在 Laravel < 5.5 的 config/app.php 中注册服务提供者
'providers' => [ ... \LeMaX10\Enums\EnumServiceProvider::class, ... ]
迁移或同步值
您可以使用 sync 命令同步数据库中创建的枚举。
示例
- 创建枚举列或更改表中的现有列并运行
Schema::create('tableName', function (Blueprint $table): void { $table->increments('id'); $table->enum('status', array_values(ExampleStatusEnum::toArray())); });
- 运行同步命令 php artisan db:enum:sync App\Models\ExampleModel
用法
$exampleModel = new ExampleModel; $exampleModel->status = ExampleStatusEnum::FOO(); $exampleModel->save(); .... echo $exampleModel->status
文档
请参阅 myclabs/php-enum 的文档。
测试
您可以使用以下命令运行测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
请参阅 贡献指南 以获取详细信息。
安全性
如果您发现任何安全问题,请通过电子邮件 rdlrobot@gmail.com 而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。