gusarov112/php-enum-doctrine

允许将您自定义的php枚举类型添加为doctrine类型

v1.0.2 2020-07-18 19:56 UTC

This package is auto-updated.

Last update: 2024-09-19 04:53:16 UTC


README

  • 允许将您自定义的php枚举类型添加为doctrine类型。
  • 支持在更新枚举值时生成正确的alter SQL。

php-enum的扩展(myclabs分支) php-enum

安装

然后要求包

composer require gusarov112/php-enum-doctrine

Symfony配置

  Gusarov112\PhpEnumDoctrine\EventListener\EnumUpdaterSubscriber:
    tags:
      - { name: doctrine.event_subscriber }

示例

创建枚举

class PetEnum extends \Gusarov112\Enum\Enum
{
    const CAT = 'CAT';
    const DOG = 'DOG';
}

通过扩展抽象类型创建相应的枚举类型

class PetType extends \Gusarov112\PhpEnumDoctrine\DBAL\EnumType
{
    public function getEnumClassName(): string
    {
        return PetEnum::class;
    }

    public function getName()
    {
        return 'pet_type';
    }
}

在doctrine实体中使用您的列类型

use Doctrine\ORM\Mapping as ORM;

class PetEntity {
    /**
     * @var PetEnum
     * @ORM\Column(type="pet_type")
     */
    private $type;

    public function getType(): PetEnum
    {
        return $this->type;
    }

    public function setType(PetEnum $type): self
    {
        $this->type = $type;

        return $this;
    }
}

不要忘记注册您的类型

\Doctrine\DBAL\Types\Type::addType('pet_type', PetType::class);

如果您有迁移包并且想要自动生成枚举列表的alter SQL,请添加事件订阅者

$eventManager = new \Doctrine\Common\EventManager();
$eventManager->addEventSubscriber(new \Gusarov112\PhpEnumDoctrine\EventListener\EnumUpdaterSubscriber());

#!/bin/bash ./vendor/bin/doctrine migrations:diff