Saltar a contenido

Relaciones entre módulos

Por qué importa

Las relaciones son las conexiones entre módulos: un caso "pertenece a" un aplicante; un aplicante "tiene muchos" casos; un caso "tiene muchos" documentos; una compañía "tiene muchos" casos y "tiene muchos" contactos. Estas conexiones son lo que hace que ImmCase no sea solo listas independientes — son las que generan las pestañas de relacionados y permiten navegar entre registros.

Tipos de relación

  • belongsTo (perteneceA) — un registro apunta a otro. Ejemplo: un caso pertenece a un aplicante. Implementa con una columna FK.
  • hasMany (tieneMuchos) — un registro tiene varios del otro lado. Ejemplo: un aplicante tiene muchos casos.
  • hasOne (tieneUno) — un registro tiene exactamente uno del otro lado. Menos común.
  • belongsToMany (muchosAMuchos) — relación con tabla intermedia. Ejemplo: aplicantes y consultores (un aplicante puede ser atendido por varios consultores; un consultor atiende varios aplicantes).
  • morphTo / morphMany (polimórfica) — un registro puede relacionarse con varios tipos de registros distintos. Ejemplo: un comentario puede pertenecer a un aplicante o a un caso indistintamente.

Crear una relación

  1. Abre el módulo origen → pestaña RelacionesAgregar relación.
  2. Llena:
  3. Tipo de relación.
  4. Módulo destino.
  5. Nombre de la relación (cómo se llama en código, plantillas, etc.).
  6. Etiqueta de la pestaña relacionada (lo que ve el usuario).
  7. Llave foránea (si aplica) — qué campo guarda la referencia.
  8. Guardar.

ImmCase: - Crea la columna FK en la tabla del módulo origen (si es belongsTo). - Genera la pestaña relacionada en la vista de detalle del módulo padre. - Permite acceder a registros conectados en plantillas y reportes.

Screenshot: editor de relación con tipo, módulos y llave foránea

Cómo se ven las relaciones en uso

En el detalle de un aplicante, las pestañas Casos, Compañías, Documentos son cada una una relación visualizada. Cuando entras a la pestaña Casos, lo que ves es: "todos los casos donde el campo applicant_id apunta a este aplicante".

ImmCase usa el campo display_name del módulo relacionado para mostrar cada registro en la lista. Por eso es importante tener display_name bien configurado.

Modificar o eliminar relaciones

  • Renombrar la etiqueta — instantáneo, sin efecto en datos.
  • Cambiar tipo de relación — solo viable si no hay datos; con datos, puede corromper.
  • Eliminar la relación — la pestaña desaparece pero los datos (registros relacionados) permanecen — solo se desconectan visualmente. Puedes recrear la relación después y se reconectan automáticamente si la FK sigue presente.

Patrones comunes en ImmCase

  • Caso belongsTo Aplicante.
  • Aplicante hasMany Casos.
  • Caso belongsTo Compañía (sponsor, empleador, escuela).
  • Compañía hasMany Casos.
  • Caso hasMany Formularios IMM.
  • Aplicante hasMany Documentos (polimórfica).
  • Caso hasMany Documentos (polimórfica).

Ten cuidado con

  • Las relaciones polimórficas son complejas. Si necesitas que un comentario pertenezca a un aplicante O a un caso, es polimórfica. Útil pero más difícil de mantener — pídele a tu administrador técnico antes de configurar.
  • Llaves foráneas con datos no se cambian. Si renombras la FK, los datos existentes pierden la referencia. Decide bien el nombre desde el principio.
  • Eliminar el padre puede afectar a los hijos. Si configuras la relación con cascade, eliminar un aplicante elimina sus casos automáticamente. Si configuras con restrict, eliminar el aplicante falla mientras tenga casos. Decide según riesgo.

A dónde sigue