Los formularios de Symfony 1.4

4.1. Antes de comenzar

En los ejemplos de este capítulo se crea un sistema para gestionar artículos (como por ejemplo los artículos de un blog). A continuación se muestra el esquema de la base de datos, que está formado por cinco tablas: articulo, autor, categoria, etiqueta y articulo_etiqueta.

Listado 4-1 - Esquema de la base de datos

# config/schema.yml
propel:
  articulo:
    id:                ~
    titulo:            { type: varchar(255), required: true }
    slug:              { type: varchar(255), required: true }
    contenido:         longvarchar
    estado:            varchar(255)
    autor_id:          { type: integer, required: true, foreignTable: autor, foreignReference: id, onDelete: cascade }
    categoria_id:      { type: integer, required: false, foreignTable: categoria, foreignReference: id, onDelete: setnull }
    fecha_publicacion: timestamp
    created_at:        ~
    updated_at:        ~
    _uniques:
      unique_slug:     [slug]

  autor:
    id:                ~
    nombre:            varchar(20)
    apellidos:         varchar(20)
    email:             { type: varchar(255), required: true }
    activo:            boolean

  categoria:
    id:                ~
    nombre:            { type: varchar(255), required: true }

  etiqueta:
    id:                ~
    nombre:            { type: varchar(255), required: true }

  articulo_etiqueta:
    articulo_id:       { type: integer, foreignTable: articulo, foreignReference: id, primaryKey: true, onDelete: cascade }
    etiqueta_id:       { type: integer, foreignTable: etiqueta, foreignReference: id, primaryKey: true, onDelete: cascade }

Las relaciones entre las tablas son las siguientes:

  • Relación 1-n entre las tablas articulo y autor: cada artículo está escrito por uno y sólo un autor.
  • Relación 1-n entre las tablas articulo y categoria: cada artículo está asociado a cero o una categoría.
  • Relación n-n entre las tablas articulo y etiqueta.