laulamanapps / doctrine-enum
轻松创建 Doctrine 枚举类型
dev-master
2019-01-22 11:54 UTC
Requires
- php: >=7.1
- doctrine/dbal: 2.9
- werkspot/enum: ^2.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.7
- mockery/mockery: ^1.0
- phpunit/phpunit: ^6.3
This package is auto-updated.
Last update: 2024-09-23 00:53:58 UTC
README
本包包含辅助类,用于使用 Doctrine 将枚举转换为数据库值。
安装
# composer require laulamanapps/doctrine-enum
用法
如此处所述创建枚举。
# src/Enums/FooEnum.php namespace YourAwesomeOrganisation\Enums; use Werkspot\Enum\AbstractEnum; /** * @method static FooEnum foo() * @method bool isFoo() * @method static FooEnum bar() * @method bool isBar() */ final class FooEnum extends AbstractEnum { const FOO = 'foo'; const BAR = 'bar'; }
为该枚举创建特定的 doctrine 类型
# src/Doctrine/Persistence/Type/FooEnumType.php namespace YourAwesomeOrganisation\Doctrine\Persistence\Type; use YourAwesomeOrganisation\Enums\FooEnum; final class FooEnumType extends AbstractOneOnOneEnumType { protected function getEnumClass() { return FooEnum::class; } public function getName(): string { return 'enum_foo_type'; } }
将类型添加到 doctrine 配置
# config/packages/doctrine.yaml doctrine: dbal: types: enum_foo_type: YourAwesomeOrganisation\Doctrine\Persistence\Type\FooEnumType
现在在您的实体中使用它
# src/Entity/MyData.php use YourAwesomeOrganisation\Enums\FooEnum; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity() */ class MyData { /** * @var FooEnum * * @ORM\Column(type="enum_foo_type") */ private $foo; public function setFoo(FooEnum $fooEnum): void { $this->foo = $fooEnum; } public function getFoo(): FooEnum { return $this->foo; } }
现在 doctrine 将自动将 ENUM <=====> 数据库值