我正在研究我的Symfony应用程序的架构,我需要将两个布尔字段的默认值设置为false。但是,通过我尝试过的所有方法,当生成sql时,它会出现default关键字,但之后没有默认值。
我的最后一次尝试是:
negotiable:
type: bool
default: "false"
complete:
type: bool
default: "false"
但我也尝试了default: false
,default: 'false'
,default: 0
,因为false只是MySQL中0的别名,default: '0'
查询失败:
CREATE TABLE dormcode_project (id BIGINT AUTO_INCREMENT, client_id BIGINT, title VARCHAR(255), briefdesc LONGTEXT, spec LONGTEXT, coder_id BIGINT, paytype VARCHAR(30), negotiable bool DEFAULT , complete bool DEFAULT , created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX coder_id_idx (coder_id), INDEX client_id_idx (client_id), PRIMARY KEY(id)) ENGINE = INNODB
注意negotiable bool DEFAULT , complete bool DEFAULT ,
我一直在玩的文件是/config/doctrine/schema.yml
文件。我对symfony / doctrine有点新意。我认为这是正确的,但我想我可能是错的。我在每次尝试插入sql之前都symfony cc
,以确保它没有缓存模式。但它似乎没有使用我一直在改变的文件...
答案 0 :(得分:8)
由于我没有足够的积分来添加评论,我会将其添加为通过Google和我这样的人发现这一点的答案。我知道这是一个老问题。
在Symfony 2.5(至少)中,在YAML中设置默认值的正确方法如下:
negotiable:
type: boolean
options:
default: 0
complete:
type: boolean
options:
default: 0
答案 1 :(得分:7)
Boolean是TINYINT的同义词。请改用integer(1)
并将默认值设置为0/1。
来源:
http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
http://www.symfony-project.org/doctrine/1_2/en/04-Schema-Files
答案 2 :(得分:5)
您应该在架构中使用“boolean”,而不是使用“bool”。此外,默认值:false应该有效。