Debido a que la web de udelabs lleva varías semanas sin funcionar a petición de un par de usuarios me tomo la libertad de subir el tutorial traducido por ellos, quizás con alguna modificación que iba haciendo pero todos los méritos son de ellos.Tutorial en inglés
Descripción
En este capítulo comenzaremos a explorar el modelo del blog. Implementaremos el modelo con el Object Relation Mapper (ORM o Asignador Objeto↔Relacional) Doctrine 2. Doctrine 2 nos proporciona la persistencia de nuestros objetos PHP. También proporciona un dialecto SQL llamado Doctrine Query Language (DQL o lenguaje de consulta doctrine). Además de Doctrine 2, también introduciremos el concepto de datos de prueba. Los datos de prueba (en adelante: accesorios) son un mecanismo para llenar nuestras bases de datos de desarrollo y probar con datos de prueba adecuados. Al final de este capítulo habrás definido el modelo del blog, actualizando la base de datos para reflejar el nuevo modelo, y creado algunos accesorios. También habremos construido las bases para la página show del blog.
Doctrine 2: El modelo
Para que funcione nuestro blog necesitamos una manera de guardar los datos. Doctrine 2 proporciona un ORM diseñado exactamente para este propósito. El ORM de Doctrine 2 se encuentra en lo alto de una potente Capa de abstracción de base de datos que nos da la abstracción de almacenamiento a través del PDO de PHP. Esto nos permite utilizar una serie de distintos motores de almacenamiento, incluyendoMySQL, PostgreSQL y SQLite. Vamos a utilizar MySQL para nuestro motor de almacenamiento, pero, lo puedes sustituir por cualquier otro motor que desees.
Si no estás familiarizado con algún
ORM, vamos a explicar su principio básico. La definición en
Wikipedia dice:
“Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a “virtual object database” that can be used from within the programming language.”
En la que las habilidades del
ORM traducen desde datos de una base de datos relacional como
MySQL en objetos
PHP que podemos manipular. Esto nos permite encapsular la funcionalidad que necesitamos en una tabla dentro de una clase. Piensa en una tabla de usuarios, probablemente esta tenga campos como
username,
password,
first_name,
last_name,
email y
dob (siglas de
day of birth o en Español “fecha de nacimiento”). Con un
ORM esta se convierte en una clase con las propiedades
username,
password,
first_name, etc., que nos permite llamar a métodos tales como
getUsername() y
setPassword(). Los
ORMvan mucho más allá de esto, sin embargo, también son capaces de recuperar tablas relacionadas para nosotros, ya sea al mismo tiempo que recupera el objeto usuario, o de manera diferida en el futuro. Ahora, consideremos que nuestro usuario tiene algunos amigos con los que está relacionado. Para ello deberíamos tener una tabla de
amigos, almacenando la clave primaria de la tabla usuario dentro de ella. Usando el
ORM ahora podríamos hacer una llamada como
$user->getFriends() para recuperar objetos de la tabla de
amigos. Si eso no es suficiente, el
ORM también se ocupa de guardarlos por lo tanto puedes crear objetos en
PHP, llamar a un método como
save() y permitir que el
ORM se ocupe de los detalles de en realidad persistir los datos en la base de datos. Debido a que estamos usando el
ORM de
Doctrine 2, te familiarizarás mucho más con lo que es un
ORM a medida que avancemos a través de esta guía.
Si bien en esta guía utilizaremos el
ORM de
Doctrine 2, puedes optar por usar la biblioteca
Object Document Mapper (
ODM o Asignador Objeto↔Documento) de
Doctrine 2. Hay una serie de variaciones de esta biblioteca incluyendo implementaciones de
MongoDB y
CouchDB. Ve la página del
Proyecto Doctrine para más información.
También hay un artículo en el recetario que explica cómo
configurar el ODM con Symfony2.
Leer más »