Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Doctrine relacionando clases - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 10 de noviembre de 2020 por Amadeo M.

93 visualizaciones

Descargar la transcripción

En los vídeos anteriores hemos estado viendo cómo manejar Doctrine con una sola tabla. 00:00:00
Este vídeo es más bien explicativo, más que desarrollar. 00:00:08
Vamos a utilizar el ejemplo que hemos seguido en clase y en este caso vamos a ver cómo vamos a relacionar las distintas clases. 00:00:11
Conocemos la clase usuario. La clase usuario, en este caso, ya sabemos que es una entidad. 00:00:21
es la tabla relacionada con una tabla que se llama el usuario 00:00:26
y vamos a generar un repositorio, una clase de repositorio 00:00:32
donde tendremos una serie de métodos que nos permitan acceder a la información. 00:00:34
Bueno, identificamos la clase de usuario de esta manera 00:00:39
y ahora vamos a ir al primer campo, el campo id. 00:00:42
No tiene mayor importancia, ya hemos visto en el ejemplo anterior 00:00:45
id es un id que es entero y que el valor es autogenerado. 00:00:48
a la columna nombre, que es una columna de tipo string, la columna nacido 00:00:53
que es de tipo string, ya veríamos que esto en otros casos sería de tipo fecha 00:00:58
pero de momento vamos a dejarla como string, ¿de acuerdo? que estamos trabajando con ese culite que no diferencia 00:01:02
mucho strings de fechas, y empezamos aquí 00:01:06
lo importante, vamos a definir una tabla 00:01:10
una tabla, una clase, sexo, aquí la tenemos por aquí, y vamos a decir 00:01:13
que muchos usuarios van a tener 00:01:17
un sexo, es decir, y podríamos decirlo al revés 00:01:22
un sexo lo pueden tener muchos usuarios, con lo cual sería una relación 00:01:26
desde aquí, desde el usuario de many to one, muchos a uno 00:01:29
lo primero que hay que decirle, estamos en usuario, y lo primero que hay que decirle 00:01:33
es con qué clase tiene relación 00:01:38
en este caso con sexo, después tenemos que decir exactamente lo que haríamos 00:01:42
en un join, en un select vulgar y corriente, el join lo hacemos 00:01:46
con la tabla sexo y la columna o campo con el que está referenciado es el campo id. 00:01:49
Bueno, hasta aquí es algo muy normal. 00:01:57
El otro caso que tenemos es deportes. 00:01:59
Un usuario va a practicar muchos deportes en general y un deporte va a ser practicado 00:02:02
por muchos usuarios, con lo cual nuestra relación en este caso es many to many. 00:02:08
La entidad con la que vamos a tener relaciones con deporte y la tabla que hace de enlace 00:02:13
entre usuarios y deportes, pues lo llamamos de esta manera, usuario-deporte. 00:02:18
Bueno, aquí ya tenemos no solamente cómo enlazamos hacia allá, es decir, con nuestro 00:02:24
identificador de usuario referenciamos a y d, sino también cuál es la relación inversa. 00:02:29
Entonces, con id de deporte relacionamos con su id, ¿de acuerdo? Tenemos las dos, 00:02:36
tanto el join hacia adelante como el join en la otra parte de la relación. 00:02:41
Y aquí tendríamos deportes. Voy a continuar porque lo único importante aquí es esto de aquí. Para las relaciones de tipo many to many nos hace falta que creemos una estructura que se llama de tipo array collection para que nos guarde para cada usuario todos los objetos de deporte que practica. ¿De acuerdo? Y esto hay que crearlo siempre que tengamos una relación many to many. También en los casos one to many. ¿De acuerdo? 00:02:46
Bueno, lo demás exactamente igual. Aquí tenemos los getes y aquí los setes. 00:03:16
Por aquí abajo asoma el repositorio, del cual hablaremos en otra ocasión. 00:03:22
Vamos a ir a sexo, a ver qué tenemos en sexo. 00:03:26
En sexo tenemos exactamente la definición de sexo. 00:03:30
No hay nada nuevo aquí, nada, absolutamente nada nuevo como se puede ver. 00:03:34
¿Vale? 00:03:39
Estábamos, recordamos que de usuario era una relación many to one, con lo cual este no tiene ninguna relación. 00:03:40
Sin embargo, en deporte tenemos la definición normal de los campos que tiene y tampoco tenemos en este caso ninguna relación. 00:03:46
Ya veremos que de esta manera, aunque sea many to many, vamos a actuar como si fuera many to one, ¿de acuerdo? 00:03:58
Pero bueno, eso ya lo veremos posteriormente. 00:04:04
Si quisiéramos que realmente fuera many to many y esta tabla, esta clase, alojara también los objetos que practican un deporte concreto, 00:04:07
tendríamos que incluir aquí el equivalente al que hemos visto en usuarios 00:04:16
poniendo aquí private que usuarios son 00:04:20
y definiendo aquí las características correspondientes 00:04:24
para relacionar esta entidad con la entidad usuaria 00:04:28
bueno, con esto nos quedamos de momento 00:04:32
voy a dejarlo como estaba 00:04:35
y esta es la explicación de los campos que se manejan hacia el otro lado 00:04:36
¿cómo funciona esto? 00:04:43
Bueno, ¿cómo funciona esto? Pues es muy simple. En el caso de usuario hemos creado un pequeño repositorio en el cual algunos métodos que utilizamos en nuestra aplicación, pues hemos puesto aquí su equivalente. Esto no nos hubiera hecho falta, podríamos haber directamente hecho esto, pero queda bien. 00:04:45
El repositorio usuario extiende el repositorio de entidades en general y lo que estamos haciendo aquí es decirle que cuando leemos a un usuario que tiene, o estamos buscando un usuario que tiene un identificador, vamos a llamar a gestor de entidades y vamos a buscar el usuario ese identificador. 00:05:03
Si queremos buscar todos, pues en este caso los quiero además ordenados por el nombre, pues seleccionamos todos los objetos de ese usuario, de los usuarios que hay, los ordenamos por nombre y obtenemos el resultado. 00:05:21
¿De acuerdo? Esto es una manera de hacerlo. Si vamos al sexo, que también hemos incluido esto para trabajar con lo que había, tenemos nuestro read igual, nuestro read all igual y además tenemos un read indexed que nos va a servir para después mostrar, ven aquí, options y la posición es el id y el valor el nombre, con lo cual esto nos va a servir después para los campos de tipo option o similares. 00:05:37
y en deporte 00:06:03
idendeide 00:06:04
¿de acuerdo? esto es lo que vamos a tener 00:06:06
con todo esto 00:06:08
y ya sabiendo esa estructura 00:06:10
es verdad que vamos a ahorrar bastante trabajo 00:06:12
a la hora 00:06:14
de manejar nuestra librería 00:06:15
en nuestro controlador 00:06:18
se mantiene siendo un controlador muy sencillo 00:06:19
y en nuestra librería 00:06:22
en la que realmente maneja 00:06:23
todo lo que tenemos que hacer 00:06:25
pues ya vemos que por ejemplo 00:06:28
añadir una opción, pues va a ser crear usuario 00:06:30
hacer los sets correspondientes para darle su valor 00:06:32
añadir los deportes 00:06:35
y ya finalmente, pues, simplemente hacer persistir al usuario y añadir 00:06:38
modificar, pues, id de id 00:06:43
simplemente, esta línea nos sobraría 00:06:46
incluso, simplemente, haciendo el flush 00:06:48
y en eliminar, pues, lo remolramos y ya está 00:06:51
en el read, pues, leemos con el identificador 00:06:56
y en el reader exactamente como aparece aquí 00:07:00
recuerdo que estos readers los hemos hecho 00:07:04
que realmente lo que están haciendo es llamarnos 00:07:06
llamarnos, en este caso el DAO 00:07:08
está llamando al repositorio 00:07:11
por eso es muy interesante 00:07:14
es muy interesante 00:07:15
esto, este repositorio 00:07:16
donde llamamos directamente a estos métodos 00:07:19
de tal manera que entre el programa que hicimos anteriormente 00:07:22
y este programa pues no hay grandes diferencias 00:07:24
si lo programamos desde cero a lo mejor 00:07:27
hay cosas de aquí que hubiéramos eliminado 00:07:29
bueno, espero que haya aclarado 00:07:31
esta cuestión y ya por último 00:07:34
simplemente decirles que en Doctrine 00:07:36
en el manual, en la documentación 00:07:38
pues aparecen todas las posibilidades 00:07:40
que ofrece esto y que realmente 00:07:42
va a ser a medida que nos vaya haciendo falta 00:07:44
cuando nos vayamos a buscar 00:07:46
pues 00:07:47
cómo podemos obtener un tipo de información 00:07:49
u otra, pero que el mecanismo 00:07:52
es bastante fácil, bastante fácil 00:07:54
y bastante simple, y que cuando hacemos 00:07:56
una aplicación que se atiene primero a ORM 00:07:58
y además utiliza el patrón modelo vista controlador, pues 00:08:02
realmente tenemos una aplicación que es fácil de mantener y fácil de irla generando 00:08:06
a pesar de que a lo mejor en el inicio haya que establecer demasiadas cosas 00:08:10
pero después lo vamos a rentabilizar rápidamente 00:08:13
y eso es todo el vídeo, muchas gracias 00:08:17
Idioma/s:
es
Autor/es:
Amadeo Mora
Subido por:
Amadeo M.
Licencia:
Dominio público
Visualizaciones:
93
Fecha:
10 de noviembre de 2020 - 17:43
Visibilidad:
Público
Centro:
IES CLARA DEL REY
Duración:
08′ 25″
Relación de aspecto:
1.78:1
Resolución:
1364x768 píxeles
Tamaño:
38.48 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid