我正在使用string(32)
代替integer
实体id
字段(它模拟guid类型)。但是,在从实体ID创建数据库表后,字段类型设置为varchar(32)
。我认为这不是最好的主意,guid
总是有长度= 32,所以char
类型会更合适。
有没有办法告诉Doctrine使用char
或唯一的方法是在数据库中手动更改它?
答案 0 :(得分:30)
虽然 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
- 选项:其他选项的数组:
fixed
:布尔值,用于确定字符串列的指定长度是固定还是变化(仅适用于字符串/二进制列,并且可能不受所有供应商支持)。
答案 1 :(得分:6)
您可以告诉Doctrine使用特定于供应商的字段类型:
/**
* @Column(type="string", columnDefinition="CHAR(2) NOT NULL")
*/
protected $country;