app/config/parameters.yml
# This file is auto-generated during the composer install
parameters:
database_host: localhost
database_port: 3306
database_name: symfoweb
database_user: root
database_password:
2) configurar orm doctrine
app/config/config.yml
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
3) creamos la base de datos symfoweb con las siguientes tablas
CREATE TABLE `blog_post` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`content` longtext COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `blog_comment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`post_id` bigint(20) NOT NULL,
`author` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`content` longtext COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `blog_comment_post_id_idx` (`post_id`),
CONSTRAINT `blog_post_id` FOREIGN KEY (`post_id`) REFERENCES `blog_post` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
4) vamos a trabajar en un bundle nuevo
vamos a crearlo desde consola situados en la base del proyecto, ejecutamos:
lo que nos generara la siguiente estructura
lo que generara 2 archivos:
src\Acme\Bundle\BlogBundle\Resources\config\doctrine\BlogComment.orm.xml
src\Acme\Bundle\BlogBundle\Resources\config\doctrine\BlogPost.orm.xml
6) creamos las entidades
ejecutamos
lo que generara 2 archivos:
src\Acme\Bundle\BlogBundle\Entity\BlogComment.php
src\Acme\Bundle\BlogBundle\Entity\BlogPost.php
7) configuramos el routeo.
en config/routing.yml
acme_bundle_blog:
resource: "@AcmeBundleBlogBundle/Controller/"
type: annotation
prefix: /blog
probar:
http://symfoweb.local/blog
deberia mostrar en el browser:
Hello World!
8) crear un action para crear un registro en la tabla Post
CREATE TABLE `blog_post` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`content` longtext COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `blog_comment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`post_id` bigint(20) NOT NULL,
`author` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`content` longtext COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `blog_comment_post_id_idx` (`post_id`),
CONSTRAINT `blog_post_id` FOREIGN KEY (`post_id`) REFERENCES `blog_post` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
4) vamos a trabajar en un bundle nuevo
vamos a crearlo desde consola situados en la base del proyecto, ejecutamos:
php app/console generate:bundle --namespace=Acme/Bundle/BlogBundle --no-interaction
lo que nos generara la siguiente estructura
Recordar agregarlo en app/AppKernel.php
en class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
...
new Acme\Bundle\BlogBundle\AcmeBundleBlogBundle(),
5) Crear los archivo de metada que describen las entidades basadas en las tablas
php bin/console doctrine:mapping:import --force AcmeBundleBlogBundle xml
(si quisieramos generar los archivos de tipo Yaml el ultimo parametro debe ser yml)
src\Acme\Bundle\BlogBundle\Resources\config\doctrine\BlogComment.orm.xml
src\Acme\Bundle\BlogBundle\Resources\config\doctrine\BlogPost.orm.xml
6) creamos las entidades
ejecutamos
php bin/console doctrine:generate:entities AcmeBundleBlogBundle
lo que generara 2 archivos:
src\Acme\Bundle\BlogBundle\Entity\BlogComment.php
src\Acme\Bundle\BlogBundle\Entity\BlogPost.php
7) configuramos el routeo.
en config/routing.yml
acme_bundle_blog:
resource: "@AcmeBundleBlogBundle/Controller/"
type: annotation
prefix: /blog
probar:
http://symfoweb.local/blog
deberia mostrar en el browser:
Hello World!
8) crear un action para crear un registro en la tabla Post
No hay comentarios:
Publicar un comentario