2010-11-21 17 views
5

Estoy trabajando en el esquema de mi aplicación Symfony, y necesito establecer el valor predeterminado de dos campos booleanos en falso. Sin embargo, con todas las formas en que he intentado hacerlo, cuando se genera el sql, sale con la palabra clave predeterminada, pero sin un valor predeterminado después de ella.Symfony + Doctrine: Corregir la sintaxis de YAML para el valor predeterminado del campo booleano

mi último intento fue:

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

pero también he intentado default: false, default: 'false', default: 0 ya falsa es sólo un alias de 0 en MySQL, y default: '0'

A falta de consulta:

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 

Aviso negotiable bool DEFAULT , complete bool DEFAULT ,

El archivo con el que he estado jugando es el archivo /config/doctrine/schema.yml. Soy un poco nuevo en Symfony/doctrine. Creo que este es el correcto, pero creo que podría estar equivocado. Hago symfony cc entre cada intento de insertar el sql para asegurarme de que no haya caché el esquema. Pero casi parece que no está usando el archivo que he estado cambiando ...

+0

Try (una línea): negociable: {type: boolean, por defecto: false} –

+0

Intenté eso, pero no pareció haber hecho ninguna diferencia. La misma, errónea, sql aún se escupió:/ –

Respuesta

7

Boolean es un sinónimo de TINYINT. Use integer(1) en su lugar y configure su valor predeterminado en 0/1.

Fuentes:

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

Debe usar 'boolean' y dejar que doctrine lo convierta al formato más aplicable del motor de base de datos subyacente. – Maerlyn

+0

@Maerlyn: punto justo, aunque el póster quería el problema resuelto para MySQL. – Tom

5

En lugar de usar "bool", debe usar "boolean" en el esquema. Además, por defecto: falso debería funcionar.

+0

Cambié ti a 'default: false' y cambié' bool' a 'boolean' pero obtuve los mismos resultados –

+3

Muéstrenos su esquema actualizado, esto funciona para mí : 'administrador: {tipo: booleano, predeterminado: falso}'. – Maerlyn

8

ya que tengo no hay suficientes puntos para agregar un comentario, voy a agregar como una respuesta para la gente para encontrar esto a través de Google y los géneros como mí mismo. Sé que es una vieja pregunta.

En Symfony 2.5 (por lo menos), la forma correcta de establecer un valor predeterminado en YAML es como sigue:

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

¿Por qué esta respuesta está en el fondo? Esta es la solución correcta. Felicitaciones mi amigo. – axelvnk

+0

Qué extraño, estoy usando la misma versión (2.5) con esta sintaxis exacta, y todavía se niega a funcionar: / – motagirl2

Cuestiones relacionadas