Activa JavaScript para disfrutar de los vídeos de la Mediateca.
CRUD 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:
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:
- 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