Symfony+Doctrine: Correct YAML syntax for default value of boolean field
I am working on the schema for my Symfony app, and I need to set the default value of two boolean fields to false. However, with all the ways I've tried to do it, when the sql gets generated, it comes out with the default keyword, but no default value after it.
my last attempt was:
negotiable:
type: bool
default: "false"
complete:
type: bool
default: "false"
but I have also tried default: false
, default: 'false'
, default: 0
since false is just an alias for 0 in MySQL, and default: '0'
Failing Query:
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), P开发者_如何学CRIMARY KEY(id)) ENGINE = INNODB
Notice negotiable bool DEFAULT , complete bool DEFAULT ,
The file I've been playing with is the /config/doctrine/schema.yml
file. I'm kind of new to symfony/doctrine. I think this is the right one, but I guess I could be wrong. I do symfony cc
between each attempt to insert the sql to make sure that it didn't cache the schema. But it almost seems like its not using the file I've been changing...
Since I haven't enough points to add a comment, I'll add it as an answer for people finding this through Google and the sorts like myself. I know it's an old question.
In Symfony 2.5 (at least), the correct way of setting a default value in YAML is as follows:
negotiable:
type: boolean
options:
default: 0
complete:
type: boolean
options:
default: 0
Boolean is a synonym for TINYINT. Use integer(1)
instead and set your default to 0/1.
Sources:
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
Instead of using "bool" you should use "boolean" in schema. Also, default: false should work.
精彩评论