This course is still being released! Check back later for more chapters.
Extender la entidad de nuestro bundle
Keep on Learning!
If you liked what you've learned so far, dive in! Subscribe to get access to this tutorial plus video, code and script downloads.
With a Subscription, click any sentence in the script to jump to that part of the video!
Login SubscribeNuestro bundle tiene una superclase abstracta mapeada Translation
y está registrada en Doctrine. Es hora de crear la entidad real Translation
en nuestra aplicación.
En tu terminal, ejecuta:
symfony console make:entity
Para el nombre de la clase, utiliza Translation
. Todas las propiedades están definidas en la clase abstracta Translation
del bundle, así que pulsa enter para terminar.
La entidad de traducción real
En tu editor, abre nuestra nueva entidad en src/Entity/Translation.php
:
// ... lines 1 - 8 | |
#[ORM\Entity(repositoryClass: TranslationRepository::class)] | |
class Translation extends BaseTranslation | |
{ | |
#[ORM\Id] | |
#[ORM\GeneratedValue] | |
#[ORM\Column] | |
private ?int $id = null; | |
public function getId(): ?int | |
{ | |
return $this->id; | |
} | |
} |
Muy bien, ¡allá vamos! Se nos ha añadido el ID, que es todo lo que necesitamos. Ahora vamos a extender la clase abstracta Translation
del bundle. Como tiene el mismo nombre, necesitamos importarla con un alias.
En la parte superior, escribe use Translation
y elige el de nuestro bundle. Después,as BaseTranslation
. Extiéndelo con extends BaseTranslation
.
Genial, ¡ya hemos terminado!
Eventualmente, proporcionaremos una receta para que los usuarios finales no tengan que hacer este paso.
Hacer una migración
¿Nueva entidad? ¡Nueva migración!
Vuelve al terminal y ejecuta:
symfony console make:migration
Echa un vistazo. Abre el nuevo archivo de migración en el directorio migrations/
.
Comprueba el método up()
. Está creando la tabla translation
con laid
, pero también todas las columnas de la superclase mapeada de nuestro bundle. ¡Perfecto!
Añade una descripción: Add Translation entity
:
// ... lines 1 - 12 | |
final class Version20250820132819 extends AbstractMigration | |
{ | |
public function getDescription(): string | |
{ | |
return 'Add Translation entity'; | |
} | |
// ... lines 19 - 30 | |
} |
Es hora de ejecutarlo. En tu terminal, ejecuta:
symfony console doctrine:migrations:migrate
Elige yes
, y... ¡boom! ¡Base de datos migrada!
Vale, ya tenemos la entidad en nuestra aplicación, pero para que nuestro bundle pueda realizar consultas en su nombre, el bundle necesita conocerla. Un trabajo perfecto para la configuración del bundle: ¡Eso a continuación!