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