gubler / guid-doctrine
使用ramsey/uuid UUID作为Doctrine字段类型,并使用GUID编解码器。
Requires
- php: ^7.2
- doctrine/orm: ^2.5
- ramsey/uuid: ^4.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-13 19:24:33 UTC
README
本项目基于ramsey/uuid-doctrine项目。本项目唯一的不同之处在于返回GUID。这是为了处理Active Directory的GUID。
gubler/guid-doctrine包提供了使用ramsey/uuid作为Doctrine字段类型的能力。
本项目遵循贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。
安装
首选的安装方法是通过Packagist和Composer。运行以下命令以安装包并将其添加到项目的composer.json中
composer require gubler/guid-doctrine
示例
配置
为了配置Doctrine以使用gubler/guid作为字段类型,您需要在您的启动脚本中设置以下内容
\Doctrine\DBAL\Types\Type::addType('uuid', 'Gubler\Guid\Doctrine\GuidType');
在Symfony中
# config/packages/doctrine.yaml doctrine: dbal: types: guid: Gubler\Guid\Doctrine\GuidType
在Zend Framework中
<?php // module.config.php use Gubler\Guid\Doctrine\GuidType; return [ 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'types' => [ GuidType::NAME => GuidType::class,
使用方法
然后,在您的模型中,您可以通过将@Column类型设置为guid并定义一个自定义生成器Gubler\Guid\GuidGenerator来注解属性。Doctrine将处理其余部分。
/** * @Entity * @Table(name="products") */ class Product { /** * @var \Ramsey\Uuid\Uuid * * @Id * @Column(type="guid", unique=true) * @GeneratedValue(strategy="CUSTOM") * @CustomIdGenerator(class="Gubler\Guid\Doctrine\GuidGenerator") */ protected $id; public function getId() { return $this->id; } }
如果您使用XML映射而不是PHP注解。
<id name="id" column="id" type="guid"> <generator strategy="CUSTOM"/> <custom-id-generator class="Gubler\Guid\Doctrine\GuidGenerator"/> </id>
您也可以使用YAML映射。
id: id: type: guid generator: strategy: CUSTOM customIdGenerator: class: Gubler\Guid\Doctrine\GuidGenerator
二进制数据库列
在上一个示例中,Doctrine将创建一个类型为CHAR(36)的数据库列,但您也可以使用这个库将GUID存储为二进制字符串。GuidBinaryType有助于完成此操作。
在您的启动脚本中放置以下内容
\Doctrine\DBAL\Types\Type::addType('guid_binary', 'Gubler\Guid\Doctrine\GuidBinaryType'); $entityManager->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('guid_binary', 'binary');
在Symfony中
# config/packages/doctrine.yaml doctrine: dbal: types: guid_binary: Gubler\Guid\Doctrine\GuidBinaryType mapping_types: guid_binary: binary
然后,在注解模型类属性时,使用guid_binary而不是guid
@Column(type="guid_binary")
更多信息
有关Doctrine入门的更多信息,请参阅 "Doctrine入门"教程。
贡献
欢迎贡献!请阅读CONTRIBUTING以获取详细信息。
版权和许可证
gubler/guid-doctrine库版权所有© Daryl Gubler,并许可在MIT许可证(MIT)下使用。有关更多信息,请参阅LICENSE。