Ver índice de contenidos del libro

11.1. Antes de comenzar

A lo largo de este capítulo se crea un gestor de artículos como ejemplo de uso de Doctrine y los formularios de Symfony. En primer lugar se define el esquema de la base de datos, compuesto por las cinco tablas mostradas en el listado 11-1: article, author, category, tag y article_tag.

Listado 11-1 - Esquema de la base de datos

# config/doctrine/schema.yml
Article:
  actAs: [Sluggable, Timestampable]
  columns:
    title:
      type: string(255)
      notnull: true
    content:
      type: clob
    status: string(255)
    author_id: integer
    category_id: integer
    published_at: timestamp
  relations:
    Author:
      foreignAlias: Articles
    Category:
      foreignAlias: Articles
    Tags:
      class: Tag
      refClass: ArticleTag
      foreignAlias: Articles
Author:
  columns:
    first_name: string(20)
    last_name: string(20)
    email: string(255)
    active: boolean
Category:
  columns:
    name: string(255)
Tag:
  columns:
    name: string(255)
ArticleTag:
  columns:
    article_id:
      type: integer
      primary: true
    tag_id:
      type: integer
      primary: true
  relations:
    Article:
      onDelete: CASCADE
    Tag:
      onDelete: CASCADE

A continuación se muestra la relación entre las tablas:

  • Relación 1-n entre las tablas article y author, ya que cada artículo está escrito por uno y sólo un autor.
  • Relación 1-n entre las tablas article y category, ya que cada artículo pertenece a una o ninguna categoría.
  • Relación n-n entre las tablas article y tag.