Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Creando entidades con Symfony - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Bueno, es el momento de crear ya la propia aplicación.
00:00:00
Nuestra aplicación es muy sencilla.
00:00:04
Una relación entre departamentos y empleados.
00:00:05
Si vemos su modelo de entidad-relación, sería algo como esto.
00:00:09
Un empleado cuyo identificador es un IF, tiene un nombre y una fecha de nacimiento.
00:00:12
Y un departamento con un identificador ficticio y un nombre.
00:00:17
un departamento va a tener entre uno y el empleado o cero
00:00:21
y un empleado pertenece a un único departamento
00:00:26
un esquema bien simple
00:00:30
bueno una vez que tenemos esto
00:00:32
tenemos que irnos ya a ver que nos ofrece Symfony para hacer esto
00:00:34
bueno podemos ya directamente decir php bin console
00:00:40
si pulsamos aquí vemos ya montones de posibilidades
00:00:45
nosotros lo que queremos hacer es una entidad
00:00:50
con lo cual justo, justo tenemos aquí
00:00:52
make entity
00:00:54
que crea o actualiza clases
00:00:55
o entidades de doctrina
00:00:58
por justo lo que queremos
00:01:00
con lo cual vamos a decir
00:01:02
make entity
00:01:04
y nos pide la entidad
00:01:06
la criminal que vamos a hacer es la de departamento
00:01:09
entonces vamos a crear la entidad
00:01:11
departamento
00:01:14
y nos pide
00:01:15
una propiedad
00:01:17
El identificador es ficticio, con lo cual realmente no es un atributo que nosotros queramos definir, que lo haga él si quiere.
00:01:19
Nuestro único atributo importante es el nombre, con lo cual vamos a decírselo, nombre.
00:01:27
¿Y de qué tipo hay?
00:01:33
Digo, pues en principio es un string, pero voy a ver qué más posibilidades tengo.
00:01:35
Voy a darle al interrogante.
00:01:38
Y veo que tengo string, text, boolean, integer, float y un montón más.
00:01:40
de momento de las que veo
00:01:45
de los tipos principales
00:01:47
la que más adecua es string
00:01:49
que es la que es por defecto
00:01:51
con lo cual doy al enter
00:01:52
¿qué longitud?
00:01:53
pues un nombre de departamento
00:01:55
no creo que tenga más de 50 caracteres
00:01:56
le doy 50
00:01:58
y digo ¿puede ser nulo este campo?
00:01:59
digo pues no
00:02:03
con lo cual por defecto no
00:02:04
y me pregunta si quiero otra propiedad
00:02:05
no me hace falta más propiedades
00:02:09
con lo cual le doy
00:02:11
al enter
00:02:13
Bien, vamos a ir a hacer ahora la entidad de empleado. Voy, tecleo lo mismo y voy a hacer la entidad empleado.
00:02:15
miro y digo, bueno, ¿qué campos tengo?
00:02:28
digo, el primer campo que tengo es el NIF
00:02:33
el NIF sí es un campo que tiene las características propias
00:02:34
entonces le doy, campo NIF
00:02:37
dice, ¿es de tipo string?
00:02:40
digo, sí, porque son 8 dígitos y una letra
00:02:42
o si es el NIE, pues una X, 7 dígitos y una letra
00:02:45
sí es un string
00:02:48
¿de cuántos caracteres? de 9
00:02:50
¿puede ser nulo? no
00:02:52
bueno, añadimos otra propiedad
00:02:56
digo, ¿qué otra propiedad voy a añadir?
00:03:01
digo, por la otra propiedad que voy a añadir es el nombre
00:03:02
un nombre
00:03:05
el nombre completo de la persona es un string
00:03:06
y vamos a ponerle simplemente
00:03:09
que sean por 100 caracteres
00:03:11
¿va a haber nulos?
00:03:13
no, un nombre tiene que tener
00:03:15
¿hay algún campo más?
00:03:17
digo, sí, la fecha de nacimiento, nacido
00:03:19
digo, ¿es un string?
00:03:21
digo, bueno, realmente es una fecha
00:03:24
voy a ver si hay algún tipo para fecha
00:03:25
miro un poco más abajo
00:03:26
y veo que por aquí aparece algo que se llama date o fecha,
00:03:28
con lo cual le voy a dar date.
00:03:33
¿Puede ser nula la fecha de nacimiento?
00:03:35
Bueno, podría intentar que fuera nula por si hay algún problema
00:03:38
o decirle que no, voy a dejarlo que sí, que pueda ser nula.
00:03:41
¿Y hay algún dato más que quiera?
00:03:47
Digo, jo, yo de un empleado quiero saber a qué departamento pertenece,
00:03:49
así que debería poner su departamento.
00:03:52
Digo, ¿y qué tipo de campo es esto?
00:03:57
digo, pues un string no, será un código
00:03:59
de la entidad departamento
00:04:01
digo, anda, es una relación
00:04:03
digo, y un empleado
00:04:05
¿cuántos departamentos puede tener?
00:04:08
pues un empleado puede tener
00:04:10
un único departamento
00:04:11
y un departamento, ¿cuántos empleados puede tener?
00:04:12
muchos, o sea
00:04:15
que es many, muchos empleados
00:04:17
to one
00:04:19
un departamento
00:04:21
así que es este tipo
00:04:23
many to one
00:04:25
Pues escriba aquí many to one.
00:04:26
Dice, ¿con qué clase está relacionada?
00:04:32
Pues, ¿con qué entidad está relacionada?
00:04:34
Pues está relacionada con la entidad departamento.
00:04:36
Dice, un empleado, esto resumiendo es que un empleado puede no estar asignado a ningún departamento,
00:04:41
digo, puede ser nulo, bueno, podría ser, podría ser un caso en que un empleado,
00:04:47
en un momento dado, al crearlo no estuviera asignado a un empleado,
00:04:52
Podría ser que sí. Vamos a dejarle que sí. Y ahora me pregunta la parte recíproca. Es decir, ¿quiero en departamento añadir una colección de empleados que pertenece a ese departamento?
00:04:56
Digo, pues mira, sí, me vendría muy bien tener algo que yo pudiera decir de tal departamento, devuélveme todos sus empleados. Así que le voy a decir que sí.
00:05:11
¿y cómo quiero que se llame ese campo dentro del departamento?
00:05:19
pues le voy a llamar empleados, tal como dice aquí
00:05:23
¿quiere alguna propiedad más?
00:05:25
digo no
00:05:28
bueno, pues en este momento
00:05:28
ya tengo creadas
00:05:31
las entidades correspondientes
00:05:33
vamos a ver dónde estamos guardando
00:05:35
esa información
00:05:37
nos vamos al directorio src
00:05:38
y en ese directorio
00:05:41
vemos que hay otro subdirectorio
00:05:43
que se llama entities
00:05:46
vamos a entrar en él
00:05:47
y aquí tendremos departamento PHP y empleado PHP
00:05:48
vamos a ver cómo es departamento PHP
00:05:53
y vemos que ha creado una clase departamento
00:05:57
en el cual hay un campo id que se ha inventado él
00:06:02
nosotros no hemos dicho nada del id
00:06:06
un campo nombre y un campo empleados
00:06:08
y ahora dentro de estos ha creado un constructor
00:06:12
con toda la colección de empleados, ha creado guetes y setes
00:06:15
y además ha añadido incluso métodos de añadir un empleado, borrar un empleado
00:06:22
y si continuamos más abajo, pues ya vemos que ahí finaliza toda la clase empleada.
00:06:30
Además ha incluido unas anotaciones propias de Doctrine,
00:06:37
En el cual nos dice que esta entidad, departamento, es una entidad y su repositorio será la clase departamento-repositorio.
00:06:41
Además, id dice que es un id, que es un identificador, que es un valor autogenerado y que es de tipo entero.
00:06:52
Que string, que nombre es de tipo string y tiene un tamaño de 50.
00:06:58
Y que empleados es una relación one to many, un departamento tendrá muchos empleados.
00:07:04
que está relacionado con la clase empleado
00:07:10
y que viene a través de departamento
00:07:13
bueno, pues todo esto ha creado para departamento
00:07:17
vamos a ver que ha creado ahora para empleado
00:07:20
para empleado nos ha creado también una clase
00:07:23
que tiene un identificador, que se ha inventado él
00:07:29
un if, que era nuestro campo
00:07:31
nuestro campo clave hasta ahora
00:07:34
un campo nombre
00:07:37
un campo de nacimiento, una fecha de nacimiento que es de tipo date
00:07:40
y un many to one, un campo de departamento
00:07:47
en el cual está relacionado con la clase departamento
00:07:50
bueno, si seguimos viendo el código
00:07:54
vemos que están los getes y los setes correspondientes a esta clase
00:07:58
y ya estaría todo este código funcionando
00:08:02
Podríamos entrar ahora y ver en el directorio repository que ya ha creado también un repositorio de departamento y otro para empleado.
00:08:08
Vamos a verlo rápidamente, el de departamento al menos.
00:08:22
Y en él nos dice que hay una serie de campos y de métodos que ya están funcionando.
00:08:26
como es find, encontrar mediante un id, findOneBy, en el cual pondremos los criterios y nos devolverá el primero,
00:08:30
findAll, que nos devolverá todos, y findBy, que poniendo unos criterios nos devolverá por esos criterios.
00:08:41
Bueno, aquí vemos un pequeño código e incluso deja unos ejemplos de cómo podíamos hacer algo de código que nos pueda servir posteriormente.
00:08:49
Lo mismo tendremos en empleado y con esto ya tenemos hecho las dos entidades y preparadas ya para que dentro de poco hagamos el cruz de todas ellas.
00:08:59
- Idioma/s:
- Autor/es:
- Amadeo Mora
- Subido por:
- Amadeo M.
- Licencia:
- Dominio público
- Visualizaciones:
- 74
- Fecha:
- 24 de noviembre de 2020 - 15:51
- Visibilidad:
- Público
- Centro:
- IES CLARA DEL REY
- Duración:
- 09′ 12″
- Relación de aspecto:
- 16:9 Es el estándar usado por la televisión de alta definición y en varias pantallas, es ancho y normalmente se le suele llamar panorámico o widescreen, aunque todas las relaciones (a excepción de la 1:1) son widescreen. El ángulo de la diagonal es de 29,36°.
- Resolución:
- 1360x768 píxeles
- Tamaño:
- 17.30 MBytes