Symfony + Doctrine:纠正布尔字段默认值的YAML语法

The*_*i.9 5 mysql yaml doctrine symfony1

我正在研究我的Symfony应用程序的模式,我需要将两个布尔字段的默认值设置为false.但是,通过我尝试过的所有方法,当生成sql时,它会出现default关键字,但之后没有默认值.

我的最后一次尝试是:

negotiable: 
    type: bool
    default: "false"
complete: 
    type: bool
    default: "false"
Run Code Online (Sandbox Code Playgroud)

但我也试过default: false,default: 'false',default: 0因为假的只是一个在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
Run Code Online (Sandbox Code Playgroud)

注意 negotiable bool DEFAULT , complete bool DEFAULT ,

我一直在玩的/config/doctrine/schema.yml文件是文件.我对symfony/doctrine有点新意.我认为这是正确的,但我想我可能是错的.我symfony cc每次尝试插入sql以确保它没有缓存模式.但它似乎没有使用我一直在改变的文件......

pus*_*sle 9

由于我没有足够的积分来添加评论,我会将其添加为人们通过谷歌和像我这样的人发现这一点的答案.我知道这是一个老问题.

在Symfony 2.5(至少)中,在YAML中设置默认值的正确方法如下:

negotiable: 
    type: boolean
    options:
        default: 0
complete: 
    type: boolean
    options:
        default: 0
Run Code Online (Sandbox Code Playgroud)


Tom*_*Tom 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

  • 你应该使用'boolean',让doctrine将它转换为最适用的底层数据库引擎格式. (2认同)

小智 5

而不是使用"bool",你应该在架构中使用"boolean".此外,默认值:false应该工作.

  • 向我们展示你的更新架构,这对我有用:`administrator:{type:boolean,default:false}`. (3认同)