bentools/doctrine-native-enums

此包已被弃用且不再维护。未建议替代包。

为 Doctrine 提供原生 PHP 枚举的一级支持。

0.1.2 2022-01-31 12:47 UTC

This package is auto-updated.

Last update: 2023-04-29 01:30:16 UTC


README

CI Workflow Coverage

Doctrine 原生枚举

此库为 Doctrine 实体提供了对 PHP 枚举 的支持,PHP 8.1 中引入。

⚠️ 2022 年 1 月:Doctrine ORM 2.11 终于引入了对 PHP 8.1 枚举的 原生支持!🎉

这意味着此捆绑包将很快或最终被弃用。请升级您的依赖项!

安装

composer require bentools/doctrine-native-enums

使用方法

此库仅与 Backed enums 兼容。

在 Symfony 项目中

1. 声明捆绑包。

// config/bundles.php

return [
    // ...
    BenTools\Doctrine\NativeEnums\Bundle\DoctrineNativeEnumsBundle::class => ['all' => true],
];

2. 在配置中注册枚举。

# config/packages/doctrine_native_enums.yaml

doctrine_native_enums:
  enum_types:
    App\Entity\StatusEnum: ~
    #App\Entity\StatusEnum: status # Alternatively, if you want your type to be named "status"

3. 在实体中使用它们。

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
final class Book
{
    #[
        ORM\Id,
        ORM\Column(unique: true),
        ORM\GeneratedValue(strategy: 'AUTO'),
    ]
    public int $id;

    #[ORM\Column]
    public string $name;

    #[ORM\Column(type: StatusEnum::class)]
    public StatusEnum $status;
}

在其它使用 Doctrine 的项目中

use App\Entity\StatusEnum;
use BenTools\Doctrine\NativeEnums\Type\NativeEnum;
use Doctrine\DBAL\Types\Type;

NativeEnum::registerEnumType(StatusEnum::class);
// NativeEnum::registerEnumType('status', StatusEnum::class); // Alternatively, if you want your type to be named "status"

测试

php vendor/bin/pest

许可

MIT.