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
yauthor
, ya que cada artículo está escrito por uno y sólo un autor. - Relación 1-n entre las tablas
article
ycategory
, ya que cada artículo pertenece a una o ninguna categoría. - Relación n-n entre las tablas
article
ytag
.