2010-11-21 3 views
5

Sto lavorando allo schema per la mia app Symfony, e ho bisogno di impostare il valore predefinito di due campi booleani su falso. Tuttavia, con tutti i modi in cui ho provato a farlo, quando viene generato lo sql, viene fuori la parola chiave predefinita, ma non il valore predefinito dopo di essa.Symfony + Doctrine: corretta sintassi YAML per il valore predefinito del campo booleano

il mio ultimo tentativo è stato:

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

ma ho anche provato default: false, default: 'false', default: 0 dal falso è solo un alias per 0 a MySQL, e default: '0'

mancanza 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), PRIMARY KEY(id)) ENGINE = INNODB 

Avviso negotiable bool DEFAULT , complete bool DEFAULT ,

Il file con cui ho giocato è il file /config/doctrine/schema.yml. Sono un po 'nuovo a symfony/doctrine. Penso che sia quello giusto, ma credo che potrei sbagliarmi. Faccio il symfony cc tra ogni tentativo di inserire lo sql per assicurarmi che non abbia memorizzato nella cache lo schema. Ma sembra quasi che non stia usando il file che sto cambiando ...

+0

provare (una riga): trattabile: {type: booleano, predefinito: false} –

+0

Ci ho provato, ma non sembrava aver fatto alcuna differenza. Lo stesso identico, errato, sql viene ancora sputato:/ –

risposta

7

Boolean è un sinonimo di TINYINT. Utilizzare invece integer(1) e impostare il valore predefinito su 0/1.

Fonti:

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

Si dovrebbe usare 'boolean', e lasciare che doctrine lo converta nel formato più applicabile del motore DB sottostante. – Maerlyn

+0

@ Maerlyn: equo punto, anche se il poster voleva che il problema fosse risolto per MySQL. – Tom

5

Invece di usare "bool" si dovrebbe usare "booleano" nello schema. Inoltre, impostazione predefinita: false dovrebbe funzionare.

+0

Ho cambiato il ti in "default: false" e cambiato 'bool' in' boolean' ma ho ottenuto gli stessi risultati –

+3

Mostraci il tuo schema aggiornato, questo funziona per me : 'administrator: {type: boolean, default: false}'. – Maerlyn

8

visto che non ho abbastanza punti per aggiungere un commento, aggiungerò come una risposta per le persone che trovano questo attraverso Google e il genere come me stessa. So che è una vecchia domanda.

In Symfony 2.5 (almeno), il modo corretto di impostare un valore di default in YAML è la seguente:

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

Perché questa risposta è completamente in fondo ... Questa è la soluzione corretta. Complimenti amico mio. – axelvnk

+0

Strano, sto usando la stessa versione (2.5) con questa sintassi esatta, e ancora si rifiuta di lavorare: / – motagirl2