
[英]Doctrine Annotations type=“guid” and strategy=“UUID” Behavior?
[英]PostgreSQL: ramsey/uuid-doctrine vs doctrine's UUID strategy with type guid
设置是 doctrine 2.8 和 PostgreSQL 数据库 13.2。 我试图了解使用 ramsey/uuid-doctrine 与使用 guid 作为类型的学说自己的 UUID 策略的区别。
ramsey/uuid-doctrine 示例:
/**
* @ORM\Entity
*/
class Product
{
/**
* @var \Ramsey\Uuid\UuidInterface
*
* @ORM\Id
* @ORM\Column(type="uuid", unique=true)
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class=UuidGenerator::class)
*/
protected $id;
public function getId()
{
return $this->id;
}
}
学说自己的 UUID 策略及其自己的 guid 类型,映射到 PostgreSQL 上的 UUID:
/**
* @ORM\Entity()
*/
class Product
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
* @ORM\Column(type="guid")
*/
private $id;
public function getId()
{
return $this->id;
}
}
问题:
谢谢!
我真的不知道这两种方法到底发生了什么,但是对于 Doctrine 3.0,UUID 策略似乎已被弃用,应该用CUSTOM策略替换,因此应该使用自定义 id 生成器(应该扩展 Doctrine 的 AbstractIdGenerator)。
您可以在本节中看到不推荐使用的标签。
至于这种特定方法的缺点,我不知道,但我想为了换取更多的控制(你必须实现你的生成器),它比 ramsey/uuid-doctrine 要重一些。
我认为这真的取决于您的需求,也许还取决于您使用第三方库的能力:如果像我一样,您在一家大公司从事大型项目,并且如果您正在与许多公司网络安全规则作斗争,那么这可能只是go 的唯一方法。
有关自定义策略实施的更多信息。
编辑:实际上是一回事,因为这两种方法是 CUSTOM 策略。 除了一个(拉姆齐)为您负责实施。 另一个允许您生成所需的任何值(不仅仅是 UUID)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.