neutronstars/doctrine-enum-php-type

为PHP枚举系统添加了一个 doctrine 类型,旨在尽可能接近 PHP 8.1 的早期版本。

1.2.0 2021-07-09 21:02 UTC

This package is auto-updated.

Last update: 2024-09-10 04:21:32 UTC


README

阅读枚举PHP文档

https://github.com/Neutron-Pro/enum-php

安装

composer require neutronstars/doctrine-enum-php-type

Doctrine 配置

如果您使用它,您必须为您的枚举创建一个 Type 类

namespace App\Types;

class MyEnumType extends \NeutronStars\Enum\Types\EnumType {
  public const MY_ENUM = 'my_enum';
  
  public function getName(): string
  {
    return self::MY_ENUM;
  }
  
  public function convertToPHPValue($value,\Doctrine\DBAL\Platforms\AbstractPlatform $platform): MyEnum
  {
    return MyEnum::from($value);
  }
}

您必须将此添加到 doctrine.yaml 配置文件中

doctrine:
  dbal:
    types:
      my_enum:
        class: App\Types\MyEnumType

在包含您的实体字段的注解中,您必须放置类型

/**
 * @ORM\Column(type="my_enum")
 * @var MyEnum|null
 */
private ?MyEnum $myEnum;

在您的 SQL 迁移期间,您必须取消注释包含枚举的列

$this->addSql('COMMENT ON COLUMN "your_table"."your_column" IS \'(DC2Type:my_enum)\';');