Symfony2 desde 0: Crear bundle y generar entidades

Lo que realmente cuesta de pillar a la hora de programar con un framework tan potente como Symfony2 es el proceso de creación de una aplicación web con el. Eso es siempre lo que más me cuesta de entender cuando empiezo a aprender una tecnología.

Pues bien voy a comenzar a publicar una serie de posts en los que desarrollaremos una aplicación web con Symfony2 desde 0 y de forma sencilla, explicando cada minimo paso que voy dando, entenderemos como trabajar con el framework. Es justo lo que a mí me hubiera gustado encontrar más haya de ejemplos aislados del funcionamiento de cada una de sus partes.

Programaremos un pequeño blog.

Lo primero que debemos hacer es instalar Symfony2 y generar un nuevo bundle.

Crearemos el bundle en nuestra instalación de Symfony2 con el siguiente comando:

php app/console generate:bundle –namespace=Web/BlogBundle --format=yml

symfony2 desde 0 crear bundle y generar entidades creacion del bundle blog

Para el blog utilizaremos la siguiente base de datos:

CREATE DATABASE doctrine_blog;
USE doctrine_blog;

CREATE TABLE categories(
id		bigint not null auto_increment,
name	varchar(255),
constraint pk_id_category primary key(id)
)Engine=InnoDb;


CREATE TABLE users(
id 		bigint not null auto_increment,
role	varchar(255),
name	varchar(255),
surname	varchar(255),
description	varchar(255),
email	varchar(255),
password varchar(255),
image	varchar(255),
date	date,
time 	time,
constraint pk_id_course primary key(id)
)Engine=InnoDb;

CREATE TABLE posts(
id  		bigint not null auto_increment,
user_id		bigint,
category_id bigint,
title 		varchar(255),
description varchar(255),
image		varchar(255),
content		varchar(255),
status		varchar(50),
date		date,
time		time,
constraint pk_id_post primary key(id),
constraint fk_category_post foreign key(category_id) references categories(id),
constraint fk_user_post foreign key(user_id) references users(id)
)Engine=InnoDb;

CREATE TABLE tags(
id 	bigint not null auto_increment,
name varchar(255),
constraint pk_id_tag primary key(id)
)Engine=InnoDb;

CREATE TABLE tags_posts(
id bigint not null auto_increment,
tag_id bigint,
post_id bigint,
constraint pk_id_tag_post primary key(id),
constraint fk_tag_id_tp foreign key(tag_id) references tags(id),
constraint fk_post_id_tp foreign key(post_id) references posts(id)
)Engine=InnoDb;


Ejecuta el código SQL en la consola de MySQL, en PhpMyAdmin, Navicat o el programa que utilices para gestionar bases de datos MySQL.

Una vez tengas la base de datos creada. Vamos a generar las entidades, a partir de esta.
También podríamos haber generado cada entidad a mano y haber generado la base de datos, pero es un proceso más laborioso, así lo hacemos más rápido.

Generamos las entidades del blog con los siguientes comandos:

php app/console doctrine:mapping:convert xml ./src/Web/BlogBundle/Resources/config/doctrine/metadata/orm --from-database –force

php app/console doctrine:mapping:import WebBlogBundle yml

php app/console doctrine:generate:entities WebBlogBundle

symfony2 desde 0 crear bundle y generar entidades creando entidades para el blog

Ya tenemos las entidades creadas en el próximo post veremos las relaciones necesarias entre entidades de Doctrine.

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post