dxi/doctrine-extension

此包的最新版本(1.0.0)没有可用的许可证信息。

DXI Doctrine 扩展

1.0.0 2016-01-25 11:56 UTC

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