Valor predeterminado en Doctrine

Resuelto Jiew Meng asked hace 54 años • 16 respuestas

¿Cómo configuro un valor predeterminado en Doctrine 2?

Jiew Meng avatar Jan 01 '70 08:01 Jiew Meng
Aceptado
<?php
#[ORM\Entity]
class myEntity {
    #[ORM\Column(options: ["default" => 0])]
    private int $myColumn;
    // ...
}

O con la sintaxis de anotación:

<?php
/**
 * @Entity
 */
class myEntity {
    /**
     * @var string
     *
     * @ORM\Column(name="myColumn", type="integer", options={"default" : 0})
     */
    private $myColumn;
    ...
}

Tenga en cuenta que esto utiliza SQL DEFAULT, que no es compatible con algunos campos como BLOBy TEXT.

iv3ndy avatar Aug 02 '2012 11:08 iv3ndy

Los valores predeterminados de la base de datos no son compatibles de forma "portátil". La única forma de utilizar los valores predeterminados de la base de datos es a través del columnDefinitionatributo de asignación donde se especifica el SQLfragmento ( DEFAULTincluida la causa) para la columna a la que está asignado el campo.

Puedes usar:

<?php
/**
 * @Entity
 */
class myEntity {
    /**
     * @var string
     *
     * @Column(name="myColumn", type="string", length="50")
     */
    private $myColumn = 'myDefaultValue';
    ...
}

Se prefieren los valores predeterminados a nivel de PHP, ya que también están disponibles correctamente en objetos recién creados y persistentes (Doctrine no volverá a la base de datos después de persistir un nuevo objeto para obtener los valores predeterminados).

romanb avatar Jul 31 '2010 19:07 romanb

Usar:

options={"default":"foo bar"}

y no:

options={"default"="foo bar"}

Por ejemplo:

/**
* @ORM\Column(name="foo", type="smallint", options={"default":0})
*/
private $foo
Stanislav Terletskyi avatar Mar 13 '2013 10:03 Stanislav Terletskyi