gusarov112 / php-enum-doctrine
允许将您自定义的php枚举类型添加为doctrine类型
v1.0.2
2020-07-18 19:56 UTC
Requires
- php: ^7.1
- ext-json: *
- ext-pdo: *
- doctrine/orm: ^2.7
- gusarov112/php-enum: ^v2.0
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