gubler/guid-doctrine

使用ramsey/uuid UUID作为Doctrine字段类型,并使用GUID编解码器。

v1.0.0 2020-07-23 13:08 UTC

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字段类型的能力。

本项目遵循贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。

安装

首选的安装方法是通过PackagistComposer。运行以下命令以安装包并将其添加到项目的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