Relación de amigos en mini red social con Laravel

  • Autor Autor pa3lo022
  • Fecha de inicio Fecha de inicio
P

pa3lo022

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, me dan una mano con una relación que me esta volviendo loco, les cuento, estoy haciendo una mini red social, para un sitio que ya esta funcionando, la cosa es que estoy en la parte de agregar amigos pero... la cosa es como hago esa tabla, como les digo el sitio hace rato esta funcionando y la tabla user lo unico que es unique, es el Id y el Email, como hago para que en la tabla de friends, se relacione un user_id con otro user_id

Si de algo sirve, el sitio esta hecho en laravel

Bueno muchas gracias de ante mano.

saludos
 
El problema es que tienes una relación circular... y una forma de resolver eso es con alias de tabla

persona(persona_id,otros_campos)
es_mi_amigo(persona_id,contacto_id) // la persona tiene muchos contactos

Luego:
Insertar CODE, HTML o PHP:
SELECT * 
FROM persona, es_mi_amigo, persona contacto
WHERE  persona.persona_id = es_mi_amigo.persona_id
AND es_mi_amigo.contacto_id = contacto.persona_id

la tabla contacto no existe... es un alias de la tabla persona, un alias a nivel de query.

Otra opción es que hagas la tabla contacto como una copia de la tabla persona... con un trigger que copie a cada persona nueva y edite a cada persona editada.

Pero necesitas dos tablas de personas, ya sea por alias (mas sano) o por copia con trigger (mas entendible)
 
Puedes usar inner join
 
La opción más optima es que uses inner joins si es que las relaciones están explícitas
 
es sencillo, debe existir una tabla personas, luego una tabla amigos.

en la tabla amigos tienes tu

TABLE PERSON

id_person - PK
NAME
LASTNAME
AGE
ADDRESS
COUNTRY

TABLE FRIENDS

ID_AMISTAD - PK
ID_PER1 - FK
ID_PER2 - FK
STATUS - BOOLEAN


cuando 2 persona son amigos existe 1 registro en esa tabla con ambos PK DE LA TABLA PERSONA