18

我使用string(32)而不是integer实体id字段(它模拟 guid 类型)。但是在从实体 ids 字段类型创建数据库表后设置为varchar(32). 我认为这不是最好的主意,guid总是长度 = 32,所以char类型会更合适。

有没有办法告诉 Doctrine 使用char或唯一的方法是在数据库中手动更改它?

4

2 回答 2

34

尽管althaus解决方案效果很好,但我认为这应该是规范的做法:

带注释:

/**
 * @Column(type="string", length=2, options={"fixed" = true})
 */
protected $country;

使用 YAML(ID 和非 ID 字段的示例):

Your\Nice\Entity:
    id:
        id:
            type: string
            length: 32
            options:
                fixed: true
    fields:
        country:
            type: string
            length: 2
            options:
                fixed: true
  • options : 附加选项数组:
    • fixed:布尔值,用于确定字符串列的指定长度是固定的还是可变的(仅适用于字符串/二进制列,可能并非所有供应商都支持)。

官方文档

于 2014-03-11T12:46:04.480 回答
6

您可以告诉 Doctrine 使用供应商特定的字段类型:

/**
 * @Column(type="string", columnDefinition="CHAR(2) NOT NULL")
 */
protected $country;

资源

于 2013-07-26T09:36:03.793 回答