2010-11-21 21 views
5

Je travaille sur le schéma de mon application Symfony, et je dois définir la valeur par défaut de deux champs booléens sur false. Cependant, avec toutes les façons que j'ai essayé de faire, quand le sql est généré, il sort avec le mot-clé par défaut, mais pas de valeur par défaut après.Symfony + Doctrine: Correction de la syntaxe YAML pour la valeur par défaut du champ booléen

ma dernière tentative a été:

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

mais j'ai aussi essayé default: false, default: 'false', default: 0 depuis faux est juste un alias pour 0 dans MySQL, et default: '0'

A défaut de requête:

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 

avis negotiable bool DEFAULT , complete bool DEFAULT ,

Le fichier avec lequel j'ai joué est le fichier /config/doctrine/schema.yml. Je suis un peu nouveau à symfony/doctrine. Je pense que c'est la bonne, mais je suppose que je peux me tromper. Je fais symfony cc entre chaque tentative d'insérer le sql pour s'assurer qu'il n'a pas mis en cache le schéma. Mais il semble presque ne pas utiliser le fichier que j'ai changé ...

+0

Essayez (une ligne): négociable: {type: booléen, par défaut: false} –

+0

J'ai essayé, mais cela ne semblait pas avoir fait de différence. Le même, erroné, sql encore crache:/ –

Répondre

7

Boolean est un synonyme de TINYINT. Utilisez plutôt integer(1) et définissez votre valeur par défaut sur 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

+2

Vous devez utiliser 'boolean' et laisser la doctrine le convertir au format le plus applicable du moteur de base de données sous-jacent. – Maerlyn

+0

@Maerlyn: juste point, même si l'affiche voulait que le problème soit résolu pour MySQL. – Tom

5

Au lieu d'utiliser "bool", vous devriez utiliser "boolean" dans le schéma. En outre, default: false devrait fonctionner.

+0

J'ai changé ti en 'default: false' et changé' bool' en 'boolean' mais j'ai eu les mêmes résultats –

+3

Montrez-nous votre schéma mis à jour, cela fonctionne pour moi : 'administrateur: {type: booléen, défaut: faux}'. – Maerlyn

8

Depuis que j'ai pas suffisamment de points pour ajouter un commentaire, je vais l'ajouter comme une réponse pour les personnes à trouver ce par Google et les types comme moi même. Je sais que c'est une vieille question.

Symfony 2.5 (au moins), la manière correcte de définir une valeur par défaut dans YAML est comme suit:

negotiable: 
    type: boolean 
    options: 
     default: 0 
complete: 
    type: boolean 
    options: 
     default: 0 
+0

Pourquoi cette réponse est-elle tout en bas? C'est la bonne solution. Bravo mon ami. – axelvnk

+0

Comme c'est étrange, j'utilise la même version (2.5) avec cette syntaxe exacte, et ça refuse toujours de fonctionner: / – motagirl2