ufo-tech / doctrine-helper
一套针对 Doctrine 的现成解决方案(特质、接口、类),可帮助您摆脱日常繁琐,加快开发速度
1.0.0
2024-06-10 10:56 UTC
Requires
- php: >=8.3
- ramsey/uuid: *
README
一套针对 Doctrine 的现成解决方案(特质、接口、类),可帮助您摆脱日常繁琐,加快开发速度
使用 PHP 枚举类型为 MySQL 枚举类型
1. 为实体字段创建枚举案例
<?php namespace App; enum MyEnum: string { case CASE_1 = 'My case 1'; case CASE_2 = 'My case 2'; }
2. 创建 DBAL 类并扩展 Ufo\DoctrineHelper\DBAL\AbstractEnumType
<?php namespace App\DBAL; use BackedEnum; use App\MyEnum; class MyEnumType extends AbstractEnumType { protected string|BackedEnum $enum = MyEnum::class; }
3. 在 DBAL 中注册新类型
doctrine: dbal: types: App\MyEnum: 'App\DBAL\MyEnumType'
4. 使用 PHP 枚举类型设置和更改值
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] #[ORM\Table(name: 'demo')] class Demo { #[ORM\Column(type: MyEnum::class, nullable: false)] protected string $case; public function __construct(MyEnum $case) { $this->case = $case->value; } public function changeCase(MyEnum $case): void { $this->type = $case->value; } public function getCase(): string { return $this->case; } }