Usar y Crear una base de datos en Symfony2.
Bienvenidos Amigos!
En este «pequeño» tutorial vamos a ver como configurar, como conectar Symfony2 a una base de datos, usando un ORM (doctrine2).
En esta primera parte vamos a ver lo básico para crear la base de datos y su conexión. En una segunda parte que solo está en formato video, veremos como crear entidades más rápidamente, como realizar consultas updates, etc…
Recuerda que al final de la página tienes los vídeos para que veas en detalle el proceso.
Os hago un resumen de lo que podemos ver en el video:
En primer lugar vamos a crear una entidad. Una entidad va a ser una clase php, que representa un objeto de nuestra aplicación que queremos modelar y que queremos que tenga su representación también en la base de datos.
Supongamos que seguimos desarrollando nuestra aplicación de frutas y verduras, pues bien, seguramente necesitemos modelar una entidad FRUTA para guardar datos sobre las frutas. Así que lo que hacemos es crear una clase php que se llama fruta.php y por regla general las guardamos en la carpeta entity. Se trata de una clase normal, con los variables privadas y métodos get y set para acceder a las variables.
Además de crear una clase fruta.php de forma convencional, hacemos uso del API DOCTRINE (tranquilos Symfony2 lo trae de serie), indicamos que la clase es una entidad y definimos las variables privadas que deseamos que se reflejen en la base de datos.
Para importar el API de Doctrine:
use Doctrine\ORM\Mapping as ORM;
Para indicar que la clase es una entidad:
/** @ORM\Entity */
Para indicar que una variable tiene representación en la base de datos:
/** @ORM\Column(type="string", length=50) */
Para indicar que una variable es la clave primaria
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
El fichero por \src\FrontalBundle\Entity\fruta.php queda de la siguiente forma:
id;
}
public function setNombre($nombre)
{
$this->nombre = $nombre;
}
public function getNombre()
{
return $this->nombre;
}
public function setDescripcion($descripcion)
{
$this->descripcion = $descripcion;
}
public function getDescripcion()
{
return $this->descripcion;
}
public function setFechaEntrega($fechaEntrega)
{
$this->fechaAlta = $fechaAlta;
}
public function getFechaEntrega()
{
return $this->fechaEntrega;
}
public function setEcologica($ecologica)
{
$this->ecologica = $ecologica;
}
public function getEcologica()
{
return $this->ecologica;
}
public function setGramos($gramos)
{
$this->gramos = $gramos;
}
public function getGramos()
{
return $this->gramos;
}
}
En segundo lugar creamos la base de datos. Podemos crear la base de datos de dos formas:
- Con una aplicación cliente de base de datos (toad, phpmyadmin, workbench), nos conectamos a ella y creamos la base de datos y un usuario para acceder a la nueva base de datos.
- Desde línea de comandos, accedemos desde la shell y creamos un usuario que tenga privilegios suficientes.
Para conectarnos a la base de datos MySql, crear un usuario y darle permisos:
mysql -u root -p //Conexion como root, te pedirá password
mysql> CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña'; //Creación del usuario en la b.d.
mysql> GRANT ALL ON nombreBaseDatos.* TO 'usuario'@'localhost'; //Dar permisos sobre la b.d.
En tercer lugar, indicamos a Symfony donde encontrar la base de datos. Para ello tenemos el fichero \app\config\config.yml
imports:
- { resource: parameters.yml }
...
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
Y el fichero \app\config\parameters.yml
# This file is auto-generated during the composer install
parameters:
database_host: 127.0.0.1
database_port: null
database_name: fruteriadb
database_user: fruteriauser
database_password: fruteriauser
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: 3e289f5eaa4a36fc5b585cdd7fcc59cf0d96deac
El cuarto paso es que Symfony cree las tablas. Para decirle a Symfony que se conecte a la base de datos, cree la base de datos y cree las tablas (tabla fruta en nuestro ejemplo:
php app\console doctrine:database:create //Crea la base de datos
php app\console doctrine:schema:create //Crea las tablas
Y esto es un pequeño resumen de lo que vas a encontrar en el vídeo.
Espero que te guste y te sea útil, si es así no olvides darle al like.
Aquí te dejo la segunda parte del video:
Te animo a que crees tu propia aplicación siguiendo estos tutoriales.
También puedes ver todo el código en github
Un saludo!!