代码之家  ›  专栏  ›  技术社区  ›  The.Anti.9

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

  •  5
  • The.Anti.9  · 技术社区  · 14 年前

    我正在为Symfony应用程序开发模式,需要将两个布尔字段的默认值设置为false。然而,通过我尝试过的所有方法,当生成sql时,它会显示默认关键字,但后面没有默认值。

    我最后一次尝试是:

    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/教义有点陌生。我想这是对的,但我想我可能错了。我愿意 symfony cc 在每次尝试插入sql以确保它没有缓存架构之间。但它似乎没有使用我一直在更改的文件。。。

    3 回复  |  直到 14 年前
        1
  •  7
  •   Tom    14 年前

    布尔值是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
  •  9
  •   pusle    10 年前

    因为我没有足够的点数来添加评论,所以我将添加它作为人们通过Google和像我这样的人找到这个问题的答案。我知道这是个老问题。

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

    negotiable: 
        type: boolean
        options:
            default: 0
    complete: 
        type: boolean
        options:
            default: 0
    
        3
  •  5
  •   sumkincpp    14 年前

    您应该在模式中使用“boolean”,而不是使用“bool”。另外,默认值:false应该有效。