1 00:00:01,010 --> 00:00:07,230 Hasta ahora, solamente hemos estado accediendo a la información a través de su clave primaria, del ID en este caso. 2 00:00:07,790 --> 00:00:12,689 Vamos a intentar buscar información utilizando otros campos. 3 00:00:12,869 --> 00:00:16,269 En este caso, en Product, solamente tenemos el ID y el Name. 4 00:00:16,890 --> 00:00:18,269 Vamos a intentar buscar por Name. 5 00:00:19,269 --> 00:00:27,120 Bueno, vamos a partir de este listar productos PHP, vamos a copiarlo, vamos a cambiar el nombre 6 00:00:27,120 --> 00:00:31,800 para poner aquí por nombre 7 00:00:31,800 --> 00:00:36,020 y vamos a cargarlo. Ya lo tenemos cargado aquí por nombre 8 00:00:36,020 --> 00:00:39,960 y utilizamos el repositorio. Hasta aquí estábamos 9 00:00:39,960 --> 00:00:44,020 utilizando los productos y buscábamos todos. Ahora lo que 10 00:00:44,020 --> 00:00:49,509 vamos a intentar es buscar aquellos por el campo 11 00:00:49,509 --> 00:00:52,969 nombre y que el campo nombre, voy a ponerlo 12 00:00:52,969 --> 00:00:57,609 como tiene que ser, y que el campo nombre valga 13 00:00:57,609 --> 00:01:07,909 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? 14 00:01:09,209 --> 00:01:17,829 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. 15 00:01:17,989 --> 00:01:25,390 Bueno, sabiendo esto, pues yo ahora mismo debería buscar todos los productos que yo nombre sea como este. 16 00:01:25,390 --> 00:01:35,189 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. 17 00:01:35,189 --> 00:01:43,670 He estado jugando un rato antes de preparar esto y entonces, pues bueno, efectivamente tengo aquí vaso, tornillo, tuerca, teclado, otra vez tuerca. 18 00:01:44,269 --> 00:01:52,189 Vamos a ver si yo busco ahora, voy a llamar a php, listar productos por nombre de vaso. 19 00:01:52,189 --> 00:02:13,159 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. 20 00:02:13,159 --> 00:02:15,120 pero hay algo que es muy interesante 21 00:02:15,120 --> 00:02:17,719 existe una notación que dice 22 00:02:17,719 --> 00:02:18,879 encuéntrame 23 00:02:18,879 --> 00:02:21,819 voy a hacer una copia 24 00:02:21,819 --> 00:02:22,479 de este fichero 25 00:02:22,479 --> 00:02:24,520 para hacer lo que voy a hacer 26 00:02:24,520 --> 00:02:27,560 entonces lo voy a llamarle listar 27 00:02:27,560 --> 00:02:28,560 y no voy a creerlo 28 00:02:28,560 --> 00:02:29,460 voy a llamarle 29 00:02:29,460 --> 00:02:32,159 buscar 30 00:02:32,159 --> 00:02:34,560 primer producto 31 00:02:34,560 --> 00:02:37,419 por nombre 32 00:02:37,419 --> 00:02:39,219 porque efectivamente lo que vamos a hacer 33 00:02:39,219 --> 00:02:40,400 es que simplemente 34 00:02:40,400 --> 00:02:42,340 nos busque el primero 35 00:02:42,340 --> 00:02:45,120 que contenga esa información 36 00:02:45,120 --> 00:02:47,759 para eso simplemente ponemos find one by 37 00:02:47,759 --> 00:02:51,060 y el problema es que aquí ya no hay un bucle 38 00:02:51,060 --> 00:02:53,719 aquí nos va a devolver solamente un producto 39 00:02:53,719 --> 00:02:56,539 con lo cual vamos a quitar este bucle 40 00:02:56,539 --> 00:03:04,030 y vamos a ver si efectivamente esto nos encuentra algo 41 00:03:04,030 --> 00:03:05,490 vamos a ir a por ello 42 00:03:05,490 --> 00:03:07,150 vamos a ejecutarlo 43 00:03:07,150 --> 00:03:13,189 php buscar primer producto por nombre 44 00:03:13,189 --> 00:03:17,310 se ha quedado un copy por ahí, bueno, al renombrar se ha quedado ese nombre 45 00:03:17,310 --> 00:03:21,069 pero este fichero está funcionando, iré a buscar tuerca 46 00:03:21,069 --> 00:03:24,810 y efectivamente me sale la primera tuerca que había 47 00:03:24,810 --> 00:03:29,110 había un montón y aquí me sale eso, hay mucho cuidado 48 00:03:29,110 --> 00:03:33,110 en este código porque no estamos comprobando si product puede ser null 49 00:03:33,110 --> 00:03:36,909 ¿de acuerdo? ¿qué ocurriría si ahora mismo paso esto a algo que no existe? 50 00:03:37,409 --> 00:03:40,729 algo que no existe porque se va a romper casi seguro 51 00:03:40,729 --> 00:03:55,569 ¿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. 52 00:03:55,569 --> 00:04:13,599 ¿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. 53 00:04:14,419 --> 00:04:21,120 Entonces aquí ya podemos ver cómo buscar información de algún tipo que tengamos dentro. 54 00:04:21,800 --> 00:04:29,810 Un caso más complicado es que quisiéramos buscar por condiciones. Aquí estamos buscando por algo que es exactamente igual. 55 00:04:30,050 --> 00:04:50,709 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. 56 00:04:50,709 --> 00:05:09,449 ¿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. 57 00:05:10,149 --> 00:05:19,689 Muy bien. Entonces, ¿cómo lo podríamos hacer esto? Bueno, nosotros, en este caso, hemos hecho esta información de esta manera. 58 00:05:19,689 --> 00:05:32,670 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. 59 00:05:33,769 --> 00:05:47,170 ¿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. 60 00:05:49,689 --> 00:05:54,910 Manager, en el cual creamos un query. 61 00:05:55,050 --> 00:06:00,910 Nuestro query es select, select cualquier objeto, vamos a llamarle p, 62 00:06:01,470 --> 00:06:08,610 ya que vamos a trabajar con producto, del producto, creamos p al producto, 63 00:06:08,610 --> 00:06:15,389 donde, por ejemplo, pongamos que p.id sea mayor que 5. 64 00:06:16,870 --> 00:06:19,029 Esto sería una información válida, ¿de acuerdo? 65 00:06:19,029 --> 00:06:30,029 y aquí vamos a obtener todos estos productos, todos estos productos de esta query que acabamos de generar. 66 00:06:31,370 --> 00:06:39,310 Con lo cual borramos todo esto y vamos a ver si efectivamente de esta manera obtenemos esa información que queremos. 67 00:06:39,310 --> 00:06:56,970 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. 68 00:06:56,970 --> 00:07:01,389 Este problema aparece simplemente porque hemos dejado esta línea de aquí que no tiene sentido. 69 00:07:02,389 --> 00:07:05,470 6 tuerca es el único que aparece con 6. 70 00:07:05,550 --> 00:07:15,589 Si listáramos todos los productos que hay, veríamos que es el único que es mayor que 5. 71 00:07:15,949 --> 00:07:16,310 ¿De acuerdo? 72 00:07:17,050 --> 00:07:21,829 Bueno, pues este sería el método de hacerlo, con lo cual habría que conocer un poquito más de DQL. 73 00:07:21,829 --> 00:07:38,889 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. 74 00:07:39,069 --> 00:07:42,529 Es decir, lo que devuelve son objetos completos.