Saltar navegación

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

CRUD con Doctrine - 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 4 de noviembre de 2020 por Amadeo M.

136 visualizaciones

Descargar la transcripción

Vamos a empezar a ver cómo hacer un proyecto que utilice Doctrine, ¿de acuerdo? 00:00:01
Entonces vamos a seguir un poco el manual que tiene el propio proyecto Doctrine. 00:00:06
Vamos a ir a su comienzo y vamos a ver qué nos hace falta. 00:00:12
Lo primero que nos va a hacer falta es establecer el proyecto. 00:00:17
Para ello, lo primero que hacemos es crear una carpeta vacía. 00:00:21
Vamos a crearla aquí mismo. 00:00:26
Te voy a crear una carpeta vacía a la que voy a llamar Ejemplo Doctrine 00:00:27
Y en ella de momento no tengo nada 00:00:36
Voy a ir en el editor, me voy a meter en esta carpeta 00:00:40
Voy a abrir esta carpeta para trabajar con ella 00:00:43
Y no estar por ahí buscando la información 00:00:46
Vamos a ir a ella, está en este directorio 00:00:49
Y aquí 00:00:51
Bien, selecciono esta carpeta y ahora se me pone a trabajar aquí 00:00:53
Bien, estando aquí, cierro esto para que no nos incordie 00:00:57
Lo que voy a hacer es lo que nos dice el manual 00:01:01
Ya esto también lo quito 00:01:05
Lo que nos dice el manual 00:01:06
El manual nos dice que creemos un ficherito que se llame composer.json 00:01:08
Con esta información que tenemos aquí 00:01:12
Entonces vamos a crear aquí un ficherito que se llame composer.json 00:01:15
Con esta información 00:01:21
Esta información lo que nos dice es que va a utilizar los trines ORM, un tipo de anotaciones que no utilizaremos habitualmente pero que es Symfony Jam, la actualizaremos en Symfony ahora y una autocarga de lo que esté en SRC. Ya veremos qué es lo que va a venir en SRC posteriormente. Lo guardo y ya hemos hecho la primera parte. 00:01:24
Ahora, tenemos que posicionarnos en ese directorio y decir Composer Install y va a instalar todo esto que requerimos. 00:01:44
Entonces, pues vamos a abrir una terminal y como estamos ya en el directorio, pues le decimos Composer Install. 00:01:53
Bueno, ahora tarda un poquito, va a instalar todos los componentes que le hagan falta 00:02:03
y mientras que los instala podemos seguir observando cuestiones que nos van a hacer falta. 00:02:07
Esto va a crear una estructura a partir del directorio que va a generar todo esto. 00:02:16
¿Cuál es nuestra idea? Pues que convertir una serie de clases en entidades para Doctrine. 00:02:22
Hay toda una serie de ficheritos que vemos aquí que hay que generar. 00:02:30
Porque lo que queremos de acto de este fichero generar es el gestor de entidades. 00:02:34
Este gestor es el que nos va a servir. Si analizamos un poco la información vemos que arrancamos unos espacios de nombres, los usamos, arrancamos un ficherito que se va a instalar ahora, después ponemos el modo de desarrollo, establecemos que las anotaciones, la configuración de anotaciones lo vamos a hacer dentro de ese directorio SRC y que vamos a utilizar SQLite como nuestro gestor de base de datos. 00:02:39
y este fichero va a ser donde guardemos la información. 00:03:07
Bueno, podemos generar este fichero que se llama bootstrap.php 00:03:11
en lo que está haciendo el otro, vamos a generarlo, vamos, en lo que está instalando 00:03:14
ya ha acabado la instalación, ¿vale? Pues vamos a generar aquí 00:03:19
este ficherito, bootstrap.php 00:03:23
y en este fichero vamos a copiar justo esta 00:03:28
información. Si no tenemos ningún interés en cambiar nada, pues ya vemos que aquí está 00:03:33
Vendor Autolog y que esto ya se ha generado, con lo cual eso nos vale. Vamos a cerrar esta 00:03:38
ventanita y ya tenemos este fichero generado. ¿Cuál es nuestro siguiente paso? Pues nuestro 00:03:44
siguiente paso es generar la estructura de base de datos para que después vayamos creando 00:03:53
nuestras entidades en formato de base de datos. Con lo cual nos hace falta crear este ficherito 00:04:01
que se llama click-config.php con este contenido. Con lo cual lo vamos a generar, vamos a generar 00:04:06
el click-config.php con ese contenido. Una vez que tenemos esto lo guardamos y nos dice 00:04:16
que tenemos que ejecutar esta creación de este esquema 00:04:28
vale, pues vamos a crear esa generación 00:04:31
y entonces vemos aquí que es vendor, dentro de vendor 00:04:35
hay un directorio que es bin y dentro de esto está doctrina 00:04:40
y hay que poner ORM 00:04:44
esquema tool 00:04:48
create, vale, le damos 00:04:52
y efectivamente nos dice que hay algo ahí que no está bien. 00:04:55
Posiblemente nos esté hablando algo de que no existe el directorio ESRC, ¿de acuerdo? 00:05:01
Entonces yo voy a crear ese directorio, a ver si es que al no existir, pues no me permite. 00:05:09
No me permite trabajar. Vamos a ver si ahora lo generamos y efectivamente era eso. 00:05:17
porque ahora dice que no hay ninguna clase 00:05:23
perfecto, es verdad que este src lo acabamos de crear y no tiene ninguna clase 00:05:25
pero ya ha permitido aquí montar 00:05:29
con la estructura que le haga falta 00:05:33
vamos a entrar en el src y vemos que no hay nada 00:05:34
pero bueno, ya tenemos eso preparado 00:05:36
ya veremos que hay más métodos de post para crear y actualizar 00:05:40
vamos a crear nuestra primera clase 00:05:43
nuestra primera clase es Product 00:05:46
y la tenemos que crear aquí en el src 00:05:48
con lo cual vamos a decir que no hago archivo 00:05:51
y la vamos a llamar 00:05:53
product.php 00:05:54
muy bien 00:05:57
vuelvo a cerrar esto 00:05:58
para que no nos incordie 00:06:01
y voy a copiarme este contenido 00:06:02
este contenido es el que 00:06:04
tendríamos en cualquier clase 00:06:07
normal que programáramos 00:06:09
con sus comentarios 00:06:11
esta es una clase muy simple que tiene un id 00:06:12
y un nombre, surdetes 00:06:14
y su set 00:06:17
y se acabó, no tiene más 00:06:18
Nos hace falta utilizar una anotación para que después el ORM sepa qué significa cada uno de estos campos 00:06:19
Con qué se identifica 00:06:28
Entonces, pues bueno, nosotros lo que vamos a decir es, en primer lugar, que este producto PHP 00:06:30
Este producto PHP es una entidad que está relacionada con la tabla products 00:06:39
Vale, aquí estamos viendo además que hemos utilizado un espacio de nombres que a partir de ahora llamaremos ORM 00:06:49
Y fíjense que aquí aparece siempre arroba ORM barra lo que sea 00:06:55
Esto va a ser lo que indica que son unas anotaciones de esta clase 00:07:01
Ahora vamos a identificar cuál es cada uno de los atributos 00:07:07
Entonces vamos a ir al primero y este primero 00:07:11
Borramos estos comentarios que eran propios de la documentación 00:07:14
Bueno, he borrado tanto, tanto, que por aquí he perdido el protected ir, ya le tengo. Bueno, continúo, ha habido una pequeña interrupción, pero continúo. Entonces, aquí lo que me está diciendo es que este campo va a ser el identificador, que es de tipo entero y que va a ser un valor generado, es decir, como he dicho en el lenguaje MySQL, autoincrement, ¿vale? 00:07:17
Bien, vamos a ver este campo name como lo definimos, entonces seguramente no va a ser muy distinto a decirle algo así como que este campo va a ser de tipo string, ¿vale? Vamos a comprobarlo, vamos a comprobarlo con los apuntillos y efectivamente justo justo nos dice que es una columna de tipo string, perfecto, bueno, pues ya tenemos aquí generado este ficherito, ese recio. 00:07:50
Con esto hemos contado sus características. Entonces lo que nos hace falta ahora, vamos a saltarnos todo esto, es actualizar nuestro esquema. Para esto utilizamos esta estructura de aquí. Vamos a copiarla para no complicarnos mucho la vida. 00:08:20
este ficherito ya está grabado 00:08:39
con lo cual lo que vamos a hacer aquí es ejecutar 00:08:42
esa instrucción 00:08:44
ponemos aquí 00:08:45
y efectivamente nos dice 00:08:47
que va a hacer un 00:08:50
crear tabla con esas características 00:08:51
y que lo ejecuta 00:08:54
satisfactoriamente 00:08:57
entonces ya hemos visto aquí 00:08:58
que se ha creado en db 00:09:00
ese culite pues 00:09:02
estará esta estructura creada 00:09:04
vamos a comprobarlo de todas maneras 00:09:06
Como imagino que tenemos aquí el programa para verlo. Vamos a ver si es verdad. Vamos a ver el esquema que tenemos. Y efectivamente ha creado esta tabla que seguramente esta tabla no tenga ningún producto, lógicamente. 00:09:08
¿De acuerdo? Muy bien. Pues ya tenemos generada la tabla. Ahora es el momento de empezar a consultar esta tabla. Entonces, vamos a hacer un primer programa. Los programas los vamos a hacer aquí directamente en este directorio, en el directorio del proyecto. 00:09:28
Entonces, bueno, pues vamos a empezar a ver cómo crear un producto. Vamos a copiar esto de aquí, vamos a hacer un programita que se llame añadir o crear, crear, vamos a poner producto PHP, copiamos esto y vamos a entenderlo primero. 00:09:47
Lo que nos dice lo primero es que requiere bootstrap.php, que ya lo tenemos aquí, que vamos a leer desde la línea de comandos el primer argumento que va a ser el nuevo nombre de producto y vamos a utilizar una clase producto en el cual ponemos este nombre. 00:10:14
Muy bien, ahora como el EntityManager lo tiene Bootstrap, recordamos como es Bootstrap que lo último que devuelve es un EntityManager, pues entonces lo que vamos a hacer es llamarle y que nos haga persistir este objeto y ya lo actualizamos. 00:10:32
Cuando se cree el producto, pues efectivamente va a darle una ID a este producto 00:10:49
Una ID nueva, ¿vale? 00:10:54
Para eso ya le ha puesto su autoincremento 00:10:57
Voy a guardar esto y vamos a ejecutar esta aplicación 00:10:59
Voy a decir php, crear producto php 00:11:03
Y por ejemplo, pues vamos a decir botella 00:11:07
Vamos a crear el producto botella 00:11:11
Muy bien, nos ha dicho que ha creado el producto ID 1, que es botella 00:11:13
Antes de ir a hacer un programita para leer lo que hay dentro, vamos a ir a crear otro objeto, vaso, ¿vale? Y vamos a ver con ese culite, vamos a ver qué valores nos ha introducido a estos dos campos. 00:11:18
id inane from products 00:11:40
bueno, pues efectivamente ha dado una botella, dos vasos y así respectivamente 00:11:43
perfecto, o sea que la información está perfectamente guardada 00:11:50
entonces lo que vamos a hacer ahora es un programita, el siguiente programita 00:11:52
que le llamaremos, pues, listar 00:11:56
productos php 00:12:01
lo que vamos a hacer en este programita, que lo tendremos por aquí seguramente 00:12:05
algo así, es ver todos los productos 00:12:10
que hemos almacenado, entonces para ello vamos a obtener 00:12:13
la información del repositorio de productos y vamos a llamar 00:12:18
a un método que es findAll, devuélveme todos los 00:12:21
objetos que haya, entonces después para cada uno 00:12:26
de ellos vamos a mostrar el nombre 00:12:29
vamos a añadir aquí que también nos muestre 00:12:33
que también nos muestre 00:12:36
el ID 00:12:37
¿vale? 00:12:41
muy bien, pues vamos a 00:12:44
ya guardamos esta información 00:12:46
y vamos a listar 00:12:48
a listar todos los productos 00:12:50
y efectivamente pues nos aparece 00:12:53
uno vaso, una botella, dos vasos 00:12:55
justamente lo que acabamos de programar 00:12:57
ya ven que los métodos son muy fáciles 00:13:00
trabajamos con el repositorio correspondiente al producto 00:13:03
y sobre ese repositorio 00:13:05
aplicamos el método findAll 00:13:07
busca todos los que hay 00:13:10
vamos a hacer un programita que busque un único producto 00:13:12
entonces para que busque un único producto 00:13:16
pues vamos a crear un programita que busque un único producto 00:13:19
y vamos a ver cómo lo haríamos 00:13:25
nos podemos venir aquí directamente 00:13:29
seguramente es este de aquí 00:13:32
y en este caso nos pide que le digamos el ID, el identificador, la clave del producto 00:13:34
y él, llamando directamente al gestor de entidades, al entity manager, con find, 00:13:44
le decimos que busque un producto, es identificado. 00:13:52
Puede ocurrir que esto devuelva null, con lo cual no ha encontrado nada y no saldríamos 00:13:55
o puede ser que lo haya encontrado y lo muestre. 00:14:01
Vamos a poner aquí lo mismo de antes, pues me parece que queda bastante mejor ver las dos informaciones e ir volviendo y vamos a ejecutar este programa. 00:14:04
Entonces, php, buscar, vamos a buscar el 1 y efectivamente nos dice 1 botella, vamos a buscar el 2, 2 vaso y vamos a buscar el 3 y nos dice que no ha encontrado ningún producto. 00:14:20
con lo cual esto está funcionando correctamente 00:14:32
lo siguiente que vamos a hacer en nuestro cruz particular 00:14:36
es actualizar un producto 00:14:43
entonces vamos a crear un programita que se llame 00:14:45
actualizar producto 00:14:49
y seguramente será lo que tengamos 00:14:51
un poco más abajo, efectivamente 00:14:57
aquí tenemos un update producto, vamos a ver cómo se hace 00:15:01
copiamos aquí el fichero 00:15:04
y nos va a pedir dos argumentos en esta ocasión 00:15:08
nos va a pedir el identificador del producto 00:15:10
y el nuevo nombre 00:15:12
encontramos el producto 00:15:13
si el producto que devuelve es algo 00:15:16
pues haremos esto y si es nulo 00:15:20
pues dirá que no existe 00:15:22
si el producto que nos devuelve existe 00:15:23
pues entonces lo que vamos a hacer es cambiar 00:15:26
el nombre y 00:15:27
simplemente flush, ni siquiera hace falta persis 00:15:29
simplemente ya que lo grabe 00:15:32
¿de acuerdo? tan simple como eso 00:15:33
vamos a ver si esto 00:15:36
nos funciona 00:15:38
Entonces, pues, php, actualizar producto, por ejemplo, el 1, que es la botella, vamos a poner cualquier cosa, teclado, un teclado, ¿vale? 00:15:39
Y entonces, pues, no nos ha dado ningún error. Imaginen que voy a poner que el 5 es, pues, yo qué sé, un ratón. Pues entonces nos dice que el producto 5 no existe. 00:15:52
Podríamos comprobar perfectamente que hemos cambiado el 1 de botella que tenemos aquí a teclado 00:16:07
Pues listando directamente todos los productos 00:16:13
Y efectivamente vemos que el 1 es teclado y el 2 vaso 00:16:17
Así que parece que esto lo hemos conseguido perfectamente 00:16:21
Para finalizar el cruz, esta primera parte del cruz 00:16:25
Lo que vamos a hacer es borrar un elemento 00:16:31
No viene ningún ejemplo hecho en esa página que estamos siguiendo 00:16:33
pero vamos a aprovecharnos de que teníamos el buscar un producto y vamos a crear un ficherito que se llame eliminar producto ph. 00:16:39
Una vez que lo tenemos aquí creado, vamos a ir a él. 00:16:51
Ya estamos aquí, voy a quitar aquí, voy a poner aquí un comentario para que sepa que es otra cosa 00:16:54
y vamos a cerrar esto para que lo veamos. 00:17:00
Aquí nos pide el identificador, lo buscamos el producto, si no hay pues no hay ningún problema, pero lo que sí podemos querer hacer es eliminarlo. 00:17:04
Para eliminarlo iremos al entityManager y llamaremos al método remove, con lo cual le pasamos el producto que queremos borrar y ya está. 00:17:14
En este caso, pues ya estaría borrado. ¿Qué nos faltaba? Siempre nos falta poner el entity manager flush para que nos lo actualice la información. Muy bien, vamos a probarlo. 00:17:26
entonces vemos que productos tenemos 00:17:43
listar productos y por ejemplo vamos a eliminar 00:17:46
el producto 1 00:17:49
eliminar producto el 1 00:17:51
bueno, no da ningún error 00:17:54
vamos a listarlos y efectivamente 00:17:56
ha desaparecido 00:17:59
Idioma/s:
es
Autor/es:
Amadeo Mora
Subido por:
Amadeo M.
Licencia:
Dominio público
Visualizaciones:
136
Fecha:
4 de noviembre de 2020 - 19:09
Visibilidad:
Público
Centro:
IES CLARA DEL REY
Duración:
18′ 02″
Relación de aspecto:
1.78:1
Resolución:
1364x768 píxeles
Tamaño:
92.54 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid