dxi / doctrine-extension
DXI Doctrine 扩展
Requires
- php: >=5.3.3
Requires (Dev)
- doctrine/dbal: ~2.3
- doctrine/mongodb-odm: ~1.0
- doctrine/orm: ~2.3
- gedmo/doctrine-extensions: ~2.3
- marc-mabe/php-enum: ~2.0
- mockery/mockery: *
- phpunit/phpunit: ~4@stable
Suggests
- doctrine/dbal: To support DBAL Type
- doctrine/mongodb-odm: To support MongoDB ODM Type
- gedmo/doctrine-extensions:: To support Reference Extension
- marc-mabe/php-enum: To support Enum Extension
This package is not auto-updated.
Last update: 2024-09-18 10:14:55 UTC
README
Doctrine 2 扩展
安装
将 dxi/doctrine-extension 添加到 composer.json
{ "require": { "php": ">=5.3.2", "dxi/doctrine-extension": "~1.0" } }
枚举扩展
此扩展提供了从您的枚举类型创建 Doctrine 映射类型的便捷方式。目前仅支持 marc-mabe/php-enum(见 https://github.com/marc-mabe/php-enum)。
- 创建您的枚举类型
class MyEnum extends \MabeEnum\Enum { const ONE = 'one'; const TWO = 'two'; }
- 定义您的实体或文档
class MyEntity { private $id; /** * @var MyEnum */ private $myEnum; /** * @return MyEnum */ public function getMyEnum() { return $this->myEnum; } /** * @param MyEnum $myEnum */ public function setMyEnum(MyEnum $myEnum) { $this->myEnum = $myEnum; } public function getId() { return $this->id; } }
- 使用 DBAL 注册您的类型
use Dxi\DoctrineExtension\Enum\DBAL\DBALTypeRegistrar; use Dxi\DoctrineExtension\Enum\DBAL\DBALTypeClassGenerator; $targetDir = './enum-db-types'; $typeNamespace = 'My\Enum\DBALTypes'; $registrar = new DBALTypeRegistrar(new DBALTypeClassGenerator($targetDir, $typeNamespace)); $registrar->registerType('my_enum_type', '\MyEnum');
现在您可以使用 my_enum_type 进行 Doctrine ORM 映射和 DBAL 绑定。 (见 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/custom-mapping-types.html) 注意:映射为 my_enum_type 的字段创建列类型 "VARCHAR"(默认长度为 32,但您可以使用其他 "string" 类型的属性)
- 使用 MongoDB 注册您的类型
use Dxi\DoctrineExtension\Enum\DBAL\DBALTypeRegistrar; use Dxi\DoctrineExtension\Enum\DBAL\DBALTypeClassGenerator; $targetDir = './enum-mongo-types'; $typeNamespace = 'My\Enum\MongoDbTypes'; $registrar = new MongoDbTypeRegistrar(new MongoDbTypeClassRegistrar($targetDir, $typeNamespace)); $registrar->registerType('my_enum_type', '\MyEnum');
现在您可以使用 my_enum_type 进行您的 Doctrine MongoDB ODM 映射 (见 http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#custom-mapping-types)
引用扩展
它是 Gedmo/References 扩展的分支。见 https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/references.md 它提供了多注册支持以及 XML/YML 映射驱动程序。注意,当它成为 Gedmo Doctrine 扩展项目的一部分时,此扩展将被删除(见 doctrine-extensions/DoctrineExtensions#1320)