Entidades y bases de datos

En el archivo de configuración tenemos que poner la ruta a nuestra base de datos:

.env

DATABASE_URL=mysql://root:@127.0.0.1:3306/symfony

Para crear una entidad usamos lo siguiente:

php bin/console make:entity

Nos preguntará el nombre de la entidad y los campos ¡Ojo! que el id ya lo crea él.

Cuando ya hayamos creado todas las entidades que necesitamos tenemos que hacer una migración:

php bin/console make:migration

Esto nos crea un archivo Migration dentro de src/MIgrations con el sql que se tendría que ejecutar. Todavía no se ha mandado a la base de datos, se podría revisar. Para ejecutarlo tenemos que hacer lo siguiente:

php bin/console doctrine:migrations:migrate

Ojo, que esto nos afecta a la base de datos y nos podemos cargar cosas.

Aquí el mapeo de tipos: https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#doctrine-mapping-types

Para crear una entidad en la base de datos. Primero la usamos:

use App\Entity\Producto;

Y después hacemos lo siguiente:

$entityManager = $this->getDoctrine()->getManager();

$product = new Producto();
$product->setNombre(‘Keyboard’);
$product->setPrecio(1999);

// Guardamos el producto
$entityManager->persist($product);

// Actualizamos los datos en la BD
$entityManager->flush();

Para buscar un producto por id:

$product = $this->getDoctrine()
->getRepository(Producto::class)
->find($id);

Buscar un elemento:

$product = $this->getDoctrine()
->getRepository(Producto::class)
->findOneBy([‘nombre’ => ‘Keyboard’]);

Otras opciones:
$product = $this->getDoctrine()
->getRepository(Producto::class)
->findBy(
[‘name’ => ‘Keyboard’],
[‘price’ => ‘ASC’]
);

// Todos
$product = $this->getDoctrine()
->getRepository(Producto::class)->findAll();

https://symfony.com/doc/current/doctrine.html

Como hacer ingeniería inversa, obtener las entidades de una base de datos ya existente.

https://symfony.com/doc/current/doctrine/reverse_engineering.html