Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Buscar con Doctrine - 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:
Hasta ahora, solamente hemos estado accediendo a la información a través de su clave primaria, del ID en este caso.
00:00:01
Vamos a intentar buscar información utilizando otros campos.
00:00:07
En este caso, en Product, solamente tenemos el ID y el Name.
00:00:12
Vamos a intentar buscar por Name.
00:00:16
Bueno, vamos a partir de este listar productos PHP, vamos a copiarlo, vamos a cambiar el nombre
00:00:19
para poner aquí por nombre
00:00:27
y vamos a cargarlo. Ya lo tenemos cargado aquí por nombre
00:00:31
y utilizamos el repositorio. Hasta aquí estábamos
00:00:36
utilizando los productos y buscábamos todos. Ahora lo que
00:00:39
vamos a intentar es buscar aquellos por el campo
00:00:44
nombre y que el campo nombre, voy a ponerlo
00:00:49
como tiene que ser, y que el campo nombre valga
00:00:52
pues el valor que sea, ¿de acuerdo? Con lo cual aquí voy a pedir, voy a requerir que el name que me incluya sea el primer argumento, ¿de acuerdo?
00:00:57
Vamos a ver si esto se pide así porque efectivamente me falta un dólar, me faltaba a mí algo, no veía yo claro aquí el primer argumento.
00:01:09
Bueno, sabiendo esto, pues yo ahora mismo debería buscar todos los productos que yo nombre sea como este.
00:01:17
Voy a ver que tengo en este momento, esto ya está salvado, lo salvo, voy a ver que tengo yo en este momento en mi base de datos.
00:01:25
He estado jugando un rato antes de preparar esto y entonces, pues bueno, efectivamente tengo aquí vaso, tornillo, tuerca, teclado, otra vez tuerca.
00:01:35
Vamos a ver si yo busco ahora, voy a llamar a php, listar productos por nombre de vaso.
00:01:44
Vale, pues me aparece vaso. ¿Qué me ocurre si pongo tuerca? Pues que me aparecen los dos tuercas. Y si pongo algo que no existe, pues efectivamente no me aparece nada. Es decir, efectivamente me está recuperando todos los objetos cuyo campo es este.
00:01:52
pero hay algo que es muy interesante
00:02:13
existe una notación que dice
00:02:15
encuéntrame
00:02:17
voy a hacer una copia
00:02:18
de este fichero
00:02:21
para hacer lo que voy a hacer
00:02:22
entonces lo voy a llamarle listar
00:02:24
y no voy a creerlo
00:02:27
voy a llamarle
00:02:28
buscar
00:02:29
primer producto
00:02:32
por nombre
00:02:34
porque efectivamente lo que vamos a hacer
00:02:37
es que simplemente
00:02:39
nos busque el primero
00:02:40
que contenga esa información
00:02:42
para eso simplemente ponemos find one by
00:02:45
y el problema es que aquí ya no hay un bucle
00:02:47
aquí nos va a devolver solamente un producto
00:02:51
con lo cual vamos a quitar este bucle
00:02:53
y vamos a ver si efectivamente esto nos encuentra algo
00:02:56
vamos a ir a por ello
00:03:04
vamos a ejecutarlo
00:03:05
php buscar primer producto por nombre
00:03:07
se ha quedado un copy por ahí, bueno, al renombrar se ha quedado ese nombre
00:03:13
pero este fichero está funcionando, iré a buscar tuerca
00:03:17
y efectivamente me sale la primera tuerca que había
00:03:21
había un montón y aquí me sale eso, hay mucho cuidado
00:03:24
en este código porque no estamos comprobando si product puede ser null
00:03:29
¿de acuerdo? ¿qué ocurriría si ahora mismo paso esto a algo que no existe?
00:03:33
algo que no existe porque se va a romper casi seguro
00:03:37
¿De acuerdo? Va a intentar hacer un getid de un objeto que es null y no va a poder, con lo cual nos faltaría en este trozo comprobar que el producto exista, que el producto nos devuelva algo.
00:03:40
¿De acuerdo? Con que hiciéramos esto, al menos, al menos, si volvemos a ejecutar no existe, no mostraría nada y en el caso de que sí funcione, por ejemplo con vaso, pues funcionaría.
00:03:55
Entonces aquí ya podemos ver cómo buscar información de algún tipo que tengamos dentro.
00:04:14
Un caso más complicado es que quisiéramos buscar por condiciones. Aquí estamos buscando por algo que es exactamente igual.
00:04:21
Para eso tendríamos que echar mano del equivalente SQL dentro de este lenguaje de Doctrine que se llama DQL. Vamos a ver cómo lo podríamos hacer. Voy a copiar este ficherito otra vez. Por cierto, voy a poner unos nombres un poco más adecuados porque se me han quedado ahí unos nombres horribles.
00:04:30
¿Vale? Entonces, tenemos este ficherito, que es esta información que teníamos aquí del font-by, este que es el copy, que lo teníamos aquí, y ahora vamos a hacer y a llamarle por nombre de QL.
00:04:50
Muy bien. Entonces, ¿cómo lo podríamos hacer esto? Bueno, nosotros, en este caso, hemos hecho esta información de esta manera.
00:05:10
Lo que debemos hacer, vamos a ir al pequeño manual y un pequeño ejemplo, es hacer una estructura de este tipo. Me la llevo al programita para un poco analizarlo.
00:05:19
¿Qué es lo que estamos haciendo aquí? Pues un select de una información y obteniendo los resultados. Y eso es lo que voy a mostrar. Bueno, pues vamos a ver lo que es esto. En primer lugar, eso que aparece ahí es nuestro entity manager.
00:05:33
Manager, en el cual creamos un query.
00:05:49
Nuestro query es select, select cualquier objeto, vamos a llamarle p,
00:05:55
ya que vamos a trabajar con producto, del producto, creamos p al producto,
00:06:01
donde, por ejemplo, pongamos que p.id sea mayor que 5.
00:06:08
Esto sería una información válida, ¿de acuerdo?
00:06:16
y aquí vamos a obtener todos estos productos, todos estos productos de esta query que acabamos de generar.
00:06:19
Con lo cual borramos todo esto y vamos a ver si efectivamente de esta manera obtenemos esa información que queremos.
00:06:31
Vamos a llamar a PHP, listar productos por nombre de QL y efectivamente, ahora veremos qué problema hay aquí, por de QL efectivamente aquí aparece 6 tuercas.
00:06:39
Este problema aparece simplemente porque hemos dejado esta línea de aquí que no tiene sentido.
00:06:56
6 tuerca es el único que aparece con 6.
00:07:02
Si listáramos todos los productos que hay, veríamos que es el único que es mayor que 5.
00:07:05
¿De acuerdo?
00:07:15
Bueno, pues este sería el método de hacerlo, con lo cual habría que conocer un poquito más de DQL.
00:07:17
Lo que sí quiero en este momento es resaltar que aquí no estamos realmente con un select de SQL estándar, base de datos relacionales, sino que estamos seleccionando objetos P de la entidad product que se cumple que el campo id es mayor que 5.
00:07:21
Es decir, lo que devuelve son objetos completos.
00:07:39
- Idioma/s:
- Autor/es:
- Amadeo Mora
- Subido por:
- Amadeo M.
- Licencia:
- Dominio público
- Visualizaciones:
- 26
- Fecha:
- 4 de noviembre de 2020 - 19:41
- Visibilidad:
- Público
- Centro:
- IES CLARA DEL REY
- Duración:
- 07′ 44″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1364x768 píxeles
- Tamaño:
- 39.23 MBytes