Relations entre modules¶
Pourquoi c'est important¶
Les relations sont les connexions entre modules : un dossier « appartient à » un demandeur; un demandeur « a plusieurs » dossiers; un dossier « a plusieurs » documents; une entreprise « a plusieurs » dossiers et « a plusieurs » contacts. Ces connexions sont ce qui fait qu'ImmCase n'est pas que des listes indépendantes — elles sont ce qui génère les onglets liés et permet de naviguer entre fiches.
Types de relations¶
- belongsTo — une fiche pointe vers une autre. Exemple : un dossier appartient à un demandeur. Implémentée avec une colonne FK.
- hasMany — une fiche en a plusieurs de l'autre côté. Exemple : un demandeur a plusieurs dossiers.
- hasOne — une fiche en a exactement une de l'autre côté. Moins courante.
- belongsToMany — plusieurs-à-plusieurs avec une table de jonction. Exemple : demandeurs et consultants (un demandeur peut être suivi par plusieurs consultants; un consultant suit plusieurs demandeurs).
- morphTo / morphMany (polymorphique) — une fiche peut se relier à plusieurs types de fiches distincts. Exemple : un commentaire peut appartenir à un demandeur ou à un dossier indifféremment.
Créer une relation¶
- Ouvrez le module source → onglet Relations → Ajouter une relation.
- Remplissez :
- Type de relation.
- Module cible.
- Nom de la relation (comment elle s'appelle dans le code, les modèles, etc.).
- Étiquette de l'onglet lié (ce que voit l'utilisateur).
- Clé étrangère (le cas échéant) — quel champ porte la référence.
- Enregistrer.
ImmCase : - Crée la colonne FK dans la table du module source (si belongsTo). - Génère l'onglet lié dans la vue de détail du module parent. - Permet d'accéder aux fiches connectées dans modèles et rapports.

Comment les relations apparaissent à l'usage¶
Dans le détail d'un demandeur, les onglets Dossiers, Entreprises, Documents sont chacun une relation visualisée. Quand vous entrez dans l'onglet Dossiers, ce que vous voyez est : « tous les dossiers où le champ applicant_id pointe vers ce demandeur ».
ImmCase utilise le champ display_name du module lié pour afficher chaque fiche dans la liste. C'est pourquoi il importe d'avoir display_name bien configuré.
Modifier ou supprimer des relations¶
- Renommer l'étiquette — instantané, sans effet sur les données.
- Changer le type de relation — viable seulement s'il n'y a pas de données; avec des données, ça peut corrompre.
- Supprimer la relation — l'onglet disparaît mais les données (fiches liées) restent — juste visuellement déconnectées. Vous pouvez recréer la relation plus tard et elles se reconnectent automatiquement si la FK est toujours présente.
Modèles courants dans ImmCase¶
- Dossier
belongsToDemandeur. - Demandeur
hasManyDossiers. - Dossier
belongsToEntreprise (parrain, employeur, école). - Entreprise
hasManyDossiers. - Dossier
hasManyFormulaires IMM. - Demandeur
hasManyDocuments (polymorphique). - Dossier
hasManyDocuments (polymorphique).
À surveiller¶
- Les relations polymorphiques sont complexes. Si vous avez besoin qu'un commentaire appartienne à un demandeur OU à un dossier, c'est polymorphique. Utile mais plus difficile à maintenir — demandez à votre administrateur technique avant de configurer.
- Les clés étrangères avec des données ne se changent pas. Si vous renommez la FK, les données existantes perdent la référence. Décidez bien du nom dès le début.
- Supprimer le parent peut affecter les enfants. Si vous configurez la relation avec cascade, supprimer un demandeur supprime ses dossiers automatiquement. Si vous configurez avec restrict, supprimer le demandeur échoue tant qu'il a des dossiers. Décidez selon le risque.
Pour la suite¶
- Flux de travail — automatisation basée sur les relations.
- Visibilités de champs — contrôler ce qui s'affiche dans les onglets liés.