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

时间:2010-11-21 07:11:42

标签: mysql symfony1 doctrine yaml

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

我的最后一次尝试是:

negotiable: 
    type: bool
    default: "false"
complete: 
    type: bool
    default: "false"

但我也尝试了default: falsedefault: '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,以确保它没有缓存模式。但它似乎没有使用我一直在改变的文件...

3 个答案:

答案 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应该有效。