Valor predeterminado en Doctrine
¿Cómo configuro un valor predeterminado en Doctrine 2?
<?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 BLOB
y TEXT
.
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 columnDefinition
atributo de asignación donde se especifica el SQL
fragmento ( DEFAULT
incluida 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).
Usar:
options={"default":"foo bar"}
y no:
options={"default"="foo bar"}
Por ejemplo:
/**
* @ORM\Column(name="foo", type="smallint", options={"default":0})
*/
private $foo