kminek/laravel-enum

使用myclabs/php-enum作为Eloquent模型属性

v1.0.0 2021-09-15 16:14 UTC

This package is auto-updated.

Last update: 2024-09-15 22:58:52 UTC


README

使用最流行的PHP枚举实现
myclabs/php-enum作为Eloquent模型属性。

安装

composer require kminek/laravel-enum

用法

而不是使用来自myclabs/php-enum的基本枚举类

use \MyCLabs\Enum\Enum;

class Brand extends Enum
{
    public const TOYOTA = 'toyota';
    public const BMW = 'bmw';
    public const PEUGEOT = 'peugeot';
}

使用此包中的枚举类

use \Kminek\LaravelEnum\Enum;

class Brand extends Enum
{
    public const TOYOTA = 'toyota';
    public const BMW = 'bmw';
    public const PEUGEOT = 'peugeot';
}

设置模型属性以使用枚举类

class Car extends \Illuminate\Database\Eloquent\Model
{
    protected $casts = [
        'brand' => Brand::class,
    ];
}

如果您想允许null

class Car extends \Illuminate\Database\Eloquent\Model
{
    protected $casts = [
        'brand' => Brand::class.':nullable',
    ];
}

从现在起,您可以获取/设置枚举

// set
$car = new Car();
$car->brand = new Brand(Brand::BMW);
// or
$car->brand = Brand::BMW;

// get
$brand = $car->brand; // $brand is enum instance

运行测试

composer test

代码规范修复工具

composer cs