Ver índice de contenidos del libro

8.7. Referencia de los tipos de campo de Doctrine

Doctrine dispone de una gran cantidad de tipos de campo. Cada uno de ellos mapea un tipo de dato PHP a un tipo específico de columna en función del servidor de base de datos que utilices. La siguiente lista muestra todos los tipos soportados en Doctrine:

  • Cadenas de texto
    • string (usado para cadenas cortas)
    • text (usado para cadenas grandes)
  • Números
    • integer
    • smallint
    • bigint
    • decimal
    • float
  • Fechas y horas (utiliza objetos DateTime de PHP para estos campos)
    • date
    • time
    • datetime
  • Otros tipos
    • boolean
    • object (serializado y almacenado en un campo CLOB)
    • array (serializado y almacenado en un campo CLOB)

Para más información, consulta la sección Doctrine Mapping Types de la documentación de Doctrine.

8.7.1. Opciones de campo

Cada campo puede definir varias opciones de configuración. Las opciones disponibles incluyen type (el predeterminado es string), name, length, unique y nullable. Aquí tienes algunos ejemplos:

/**
 * Un campo cadena con una longitud de 255 caracteres que no puede ser nulo
 * (estos son los valores por defecto de las opciones 'type', 'length' y
 * 'nullable')
 *
 * @ORM\Column()
 */
protected $name;
 
/**
 * Un campo cadena de 150 caracteres de longitud que se persiste a una columna 
 * llamada 'email_address' y que tiene un índice único.
 *
 * @ORM\Column(name="email_address", unique=true, length=150)
 */
protected $email;
fields:
    # Un campo cadena de longitud 255 que no puede ser null
    # (que son los valores por defecto de las opciones 'length' y 'nullable')
    # el atributo 'type' es necesario en las definiciones yaml
    name:
        type: string
 
    # Un campo cadena de longitud 150 que persiste a una columna 'email_address'
    # y tiene un índice único.
    email:
        type: string
        column: email_address
        length: 150
        unique: true
<!--
    Un campo cadena de longitud 255 que no puede ser null
    (que son los valores por defecto de las opciones 'length' y 'nullable')
    el atributo 'type' es necesario en las definiciones xml
-->
<field name="name" type="string" />
<field name="email"
    type="string"
    column="email_address"
    length="150"
    unique="true"
/>

Nota Hay algunas opciones más que no figuran en esta lista. Para más detalles, consulta la sección Property Mapping de la documentación de Doctrine.