No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Práctico de Symfony

Curso Práctico de Symfony

Profesor Italo Morales F

Profesor Italo Morales F

Relaciones de tablas con los usuarios

14/22
Recursos

¿Cómo se configurarán las relaciones en las tablas de usuarios, publicaciones y comentarios?

En este artículo, exploraremos cómo configurar la relación de tablas entre diferentes entidades en un sistema de bases de datos utilizando Symfony. Es esencial entender cómo definir estas relaciones para poder escalar y actualizar las funcionalidades de un proyecto de manera efectiva.

¿Qué relaciones se están configurando?

La configuración de las relaciones se realiza para que:

  • Un usuario pueda tener muchas publicaciones.
  • Un usuario pueda tener muchos comentarios.

Para lograr esto, se crean relaciones de 'uno a muchos' (one-to-many). Lo hacemos de la siguiente manera:

# Crear una entidad
phpBing, Console, Make, Entity
# Configurar la relación de nombre para los usuarios
Nombre: String(255), no nulo
# Configurar la relación de publicaciones
Publicaciones: Relación one-to-many con la entidad de publicaciones
Eliminar publicaciones huérfanas: sí
# Configurar la relación de comentarios
Comentarios: Relación one-to-many con la entidad de comentarios
Eliminar comentarios huérfanos: sí

¿Cómo se crean y gestionan las migraciones?

Luego de configurar las entidades y sus relaciones, el siguiente paso es crear una nueva migración para que estos cambios se reflejen en la base de datos. Esto se hace con el siguiente comando:

# Crear la migración
phpBing, Console, Make, Migración

Esta migración agregará campos en las tablas respectivas para acomodar los cambios introducidos. En particular:

  • A la tabla de usuarios se le añadirá un campo de nombre.
  • En las tablas de publicaciones y comentarios se agregará un campo User ID.

¿Qué hacer si se necesita borrar las tablas existentes?

Para implementar esta configuración correctamente, se deben eliminar las tablas existentes antes de cargar los nuevos datos, especialmente si hay campos que no permiten valores nulos. Aquí está el proceso que se seguiría:

# Eliminar la base de datos
binc, console, doctrine, migraciones, drop --force
# Crear de nuevo la base de datos
phpBinc, console, doctrine:database:create
# Aplicar migraciones
phpBinc, console, doctrine, migraciones, migrate

Sin embargo, este paso debería realizarse solo si se está trabajando con datos de prueba o en un entorno de desarrollo. Para datos reales, se podría permitir valores nulos temporalmente o asignar valores por defecto durante la migración.

¿Cómo se configuran los datos y la construcción de entidades?

Una buena práctica es usar datos ficticios (semillas) para probar el sistema. Es importante configurar adecuadamente los factories de las entidades para que todo funcione correctamente:

// Crear el factory de usuarios
phpBing, Console, Make, Factory

En el factory, se crean ocho usuarios con atributos específicos como nombre, email, rol y contraseña. También se ajusta para que cada publicación y cada comentario pertenezcan a un usuario específico.

¿Cómo se revisan los resultados después de la configuración?

Después de completar todas las configuraciones, es crucial verificar que los resultados sean los esperados:

  1. Revisar que las categorías y relaciones están correctamente establecidas.
  2. Verificar que las contraseñas de usuarios no están encriptadas antes de la clase destinada a seguridad.
  3. Asegurarse de que los comentarios y publicaciones tienen sus respectivos usuarios asignados.

Este proceso es esencial para garantizar que el sistema funcione como se espera en un entorno de producción. Recuerda siempre hacer pruebas exhaustivas antes de pasar cualquier cambio a un ambiente en vivo.

Estas configuraciones son cruciales para la correcta implementación de un proyecto y ayudan a entender cómo manipular y estructurar bases de datos de manera efectiva usando Symfony. ¡Sigue explorando y aprendiendo en el fascinante mundo del desarrollo y gestión de bases de datos!

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En ocasiones el servidor web puede quedar corriendo y veremos el siguiente mensaje:

$ symfony server
[WARNING] The local web server is already running

Local Web Server
    Listening on http://127.0.0.1:8000
    The Web Server is using ....
....

$

Pero no veremos nada en el navegador, la página no se carga y no aparece ni la típica pantalla 404 de Symfony.

Solución, ejecutar desde el terminal el comando:

$ symfony server:stop 

Ahora ya se puede volver a poner en marcha el servidor local de Symfony.

Tengo el siguiente error ![](https://static.platzi.com/media/user_upload/image-9432080e-4efb-4422-9532-04c097ec893f.jpg)
Un detalle curioso: cuando fui a validar el nombre de los campos de relación para Posts y Comentarios, NO me permitió dejar la palabra User como campo, por que me sacó este mensaje: *\[ERROR] Name "user" is a reserved word.* Me tocó crear los campos como **<u>userid</u>**.