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