Files
upstream-twenty/packages/twenty-docs/l/fr/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

176 lines
8.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Créer des relations plusieurs-à-plusieurs
description: Reliez des enregistrements lorsque de nombreux éléments des deux côtés peuvent être associés ensemble au moyen d'objets de jonction.
---
Les relations plusieurs-à-plusieurs vous permettent de relier plusieurs enregistrements des deux côtés. Par exemple : de nombreuses Personnes peuvent travailler sur de nombreux Projets, et chaque Projet peut avoir de nombreuses Personnes.
<Warning>
**Fonctionnalité bêta** : Les relations de jonction sont actuellement en bêta. Activez-les dans **Paramètres → Communauté → Fonctionnalités** avant de suivre ce guide.
</Warning>
<Note>
Cette fonctionnalité exige également que le **mode avancé** soit activé (bascule en bas à gauche des Paramètres).
</Note>
## Quand utiliser les relations plusieurs-à-plusieurs
Utilisez plusieurs-à-plusieurs lorsque les deux côtés d'une relation peuvent avoir plusieurs connexions :
| Relation | Exemple |
| ------------------------ | ------------------------------------------------------------------------------------------------------- |
| Personnes ↔ Projets | Une personne travaille sur plusieurs projets ; un projet a plusieurs membres de l'équipe |
| Entreprises ↔ Étiquettes | Une entreprise peut avoir plusieurs étiquettes ; une étiquette peut s'appliquer à plusieurs entreprises |
| Produits ↔ Commandes | Un produit peut se trouver dans plusieurs commandes ; une commande contient plusieurs produits |
## Comment ça marche
Twenty utilise un modèle d'**objet de jonction** pour les relations plusieurs-à-plusieurs. Un objet de jonction se situe entre deux objets et conserve les connexions :
```
People ←→ Project Assignments ←→ Projects
```
L'objet **Affectations de projet** (jonction) comporte :
* Une relation vers Personnes (plusieurs-à-un)
* Une relation vers Projets (plusieurs-à-un)
Lorsque vous activez la bascule de relation de jonction, Twenty affiche directement les enregistrements liés au lieu d'afficher les enregistrements de jonction intermédiaires.
## Prérequis
1. **Activer les relations de jonction dans les fonctionnalités bêta** : Allez dans **Paramètres → Communauté → Fonctionnalités** et activez **Relations de jonction**
2. **Activer le mode avancé** : Activez le **mode avancé** via la bascule en bas à gauche de la barre latérale des Paramètres
3. Planifiez votre modèle de données :
* Quels sont les deux objets que vous connectez ?
* Comment doit s'appeler l'objet de jonction ?
## Étape 1 : Créer l'objet de jonction
D'abord, créez l'objet intermédiaire qui contiendra les connexions.
1. Allez dans **Paramètres → Modèle de données**
2. Cliquez sur **+ Ajouter un objet**
3. Donnez-lui un nom explicite (p. ex., "Affectation de projet", "Membre de l'équipe", "Commande de produit")
4. Activez l’option "Ignorer la création d’un champ Nom"
<img src="/images/user-guide/fields/new-pivot-object.png" alt="Nouvel objet de jonction" />
5. Cliquez sur **Enregistrer**
<Tip>
**Convention de nommage** : Utilisez un nom qui décrit la relation, comme "Affectation de projet" ou "Appartenance à l'équipe". Cela rend le modèle de données plus facile à comprendre.
</Tip>
## Étape 2 : Créer des relations entre les objets et l’objet de jonction
Ajoutez des champs de relation depuis chacun de vos deux objets vers l’objet de jonction.
### Première relation (Objet A → Jonction)
1. Sélectionnez votre premier objet dans **Paramètres → Modèle de données**
2. Cliquez sur **+ Ajouter une relation**
3. Sélectionnez l’objet de jonction (p. ex., "Affectations de projet")
4. Définissez le type de relation sur **Un-à-plusieurs** (une personne peut être liée à de nombreuses affectations)
5. Nommez les champs :
* Champ sur Personnes : p. ex., "Affectations de projet"
* Champ sur la jonction : p. ex., "Personne"
6. Cliquez sur **Enregistrer**
### Deuxième relation (Objet B → Jonction)
1. Sélectionnez votre deuxième objet dans **Paramètres → Modèle de données**
2. Cliquez sur **+ Ajouter une relation**
3. Sélectionnez l’objet de jonction (p. ex., "Affectations de projet")
4. Définissez le type de relation sur **Un-à-plusieurs** (un projet peut être lié à de nombreuses affectations)
5. Activez **"Il s'agit d'une relation vers un objet de jonction"**
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
6. Nommez les champs :
* Champ sur la jonction : p. ex., "Projet"
* Champ sur Projets : p. ex., "Membres de l'équipe"
7. Cliquez sur **Enregistrer**
## Étape 3 : Configurer l'affichage de la relation de jonction
Configurez maintenant les objets sources pour afficher directement les enregistrements liés, en ignorant l'objet de jonction intermédiaire.
1. Allez dans **Paramètres → Modèle de données**
2. Sélectionnez le premier objet (p. ex., "Personnes")
3. Recherchez le champ de relation pointant vers l'objet de jonction (p. ex., "Affectations de projet")
4. Cliquez pour modifier le champ
5. Activez **"Il s'agit d'une relation vers un objet de jonction"**
6. Sélectionnez la **relation cible** (p. ex., "Projet" — le champ sur la jonction qui pointe vers l'autre côté)
7. Cliquez sur **Enregistrer**
## Résultat
Après configuration :
* Sur un enregistrement **Personne**, le champ "Affectations de projet" affiche directement les **Projets** (et non les enregistrements d'affectation)
* Sur un enregistrement **Projet**, le champ "Membres de l'équipe" affiche directement les **Personnes**
L'objet de jonction existe toujours et stocke les connexions, mais l'interface présente une vue plusieurs-à-plusieurs plus épurée.
## Exemple : Personnes ↔ Projets
Voici un guide complet :
### Créer l'objet de jonction
* Nom : **Affectation de projet**
* Description : "Associe les personnes aux projets sur lesquels elles travaillent"
### Ajouter des relations
1. **Personnes → Affectation de projet**
* Type : Un-à-plusieurs
* Champ sur Personnes : "Affectations de projet"
* Champ sur Affectation : "Personne"
2. **Projets → Affectation de projet**
* Type : Un-à-plusieurs
* Champ sur Projets : "Membres de l'équipe"
* Champ sur Affectation : "Projet"
### Configurer l'affichage de la jonction
1. Sur l'objet **Personnes** :
* Modifiez le champ "Affectations de projet"
* Activez la bascule de jonction
* Cible : "Projet"
2. Sur l'objet **Projets** :
* Modifiez le champ "Membres de l'équipe"
* Activez la bascule de jonction
* Cible : "Personne"
### Utilisez-le
* Ouvrez un enregistrement Personne → Voyez directement ses Projets
* Ouvrez un enregistrement Projet → Voyez directement les membres de l'équipe
* Créez de nouvelles connexions depuis les deux côtés
## Ajout de données supplémentaires aux connexions
Comme l'objet de jonction est un véritable objet, vous pouvez ajouter des champs personnalisés pour stocker des informations sur la relation :
* **Rôle** : "Développeur", "Designer", "Responsable"
* **Date de début** : lorsque la personne a rejoint le projet
* **Heures allouées** : Heures hebdomadaires sur ce projet
Pour accéder à ces données, accédez directement à l'objet de jonction ou interrogez-le via l'API.
## Limitations
* **Import/Export CSV** : L'importation directe de relations plusieurs-à-plusieurs n'est pas prise en charge. Importez plutôt des enregistrements dans l'objet de jonction.
* **Filtres** : Le filtrage par relations plusieurs-à-plusieurs peut offrir des options limitées.
## Articles connexes
* [Champs de relation](/l/fr/user-guide/data-model/capabilities/relation-fields) — types de relation expliqués
* [Créer des objets personnalisés](/l/fr/user-guide/data-model/how-tos/create-custom-objects) — comment créer des objets
* [Créer des champs de relation](/l/fr/user-guide/data-model/how-tos/create-relation-fields) — configuration de base des relations