在创建表上,您可以使用此注释
/**
* @ORM\Column(name="uuid", type="guid", columnDefinition="DEFAULT uuid_generate_v4()", options={"comment"="Column Comment Here"})
* @ORM\Id()
* @ORM\GeneratedValue(strategy="UUID")
*/
private $uuid;
ColumnDefinition将内容附加到 DDL参见 Doctrine Documentation
此配置的 SQL 输出是
ALTER TABLE table_name ADD uuid DEFAULT uuid_generate_v4();
COMMENT ON COLUMN table_name.uuid IS 'Column Comment Here';
这些注释对 CHANGE COLUMN 没有任何作用。仅适用于 ADD COLUMN 生成的 SQL。您必须手动重新创建列或更改表。
重要提示:
对于那些在 PostgreSQL 中寻找创建UUID 列类型的人,请记住,您需要启用一些扩展才能使用创建 uuid-hash 的函数。
在示例中,uuid_generate_v4()派生自UUID-OSSP,旧版本的 PostgreSQL 不支持它。取而代之的是 UUID-OSSP,您可以使用PGCRYPTO 的gen_random_uuid ()函数。UUID 结果是相同的版本(v4)。同样,旧版本不支持它。
请记住使用Create Extension安装扩展。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; // OR
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
另一个重要提示:在某些 PostgreSQL 安装(如 CentOS)中,默认情况下不包含扩展。您必须安装它们。
对于 CentOS/RHEL,您需要安装postgresql-contrib。注意你的 PostgreSQL 的版本。即对于 9.5 版,您必须使用postgresql95-contrib
我的权限很弱
有一个技巧可以创建没有扩展的 uuid 哈希。只需使用上面的说明。
uuid_in(md5(random()::text || clock_timestamp()::text)::cstring);
如果您的版本支持 ::UUID 转换,请使用
md5(random()::text || clock_timestamp()::text)::uuid