DirectusApiManager et relation Many to many

Bonjour les codeurs,

Depuis quelques temps, je m’arrache les cheveux sur un problème de relation Many to many créée dans Directus. Je n’arrive pas à récupérer les données avec le DirectusApiManager proposé par Maxime et Jean-Michel.

J’ai une table User et une table Activity. Les « user » peuvent s’inscrire à plusieurs « activity » et bien entendu, une « activity » peut avoir plusieurs « user » d’inscrits.
Si je passe par la fonction apiManager.getDirectusUserList(), l’ApiManager envoie une requête vers https://monsite/users, donc difficile de récupérer mes « activity ». Et si je passe par la fonction apiManager.findListOfItems(), la requête est envoyée vers https://monsite/items/activity/ je n’arrive pas à récupérer des users, car l’Api de Directus les renvoie une table de jonction.

En fait, je voudrais créer une liste d’inscrits (user) aux activités, mais aussi une liste d’activités sélectionnées par les users.
Je ne vois pas comment m’y prendre.

Si quelqu’un peut m’aiguiller, ça pourrait apaiser mes nuits :weary:

Json renvoyé après un appel vers items/activity:

"users": [
      {
        "id": 1,
        "activity_id": "2d555f02-159d-4405-b72e-3714b64a8741",
        "directus_users_id": {
          "id": "e4e4008f-feca-4413-9011-78b2fcdec151",
          "first_name": "Justine",
          "last_name": "Titegoutte",
          "email": "[email protected]",
          "role": "0a50192e-f476-44a3-8f48-d0012550ed6c"
        }
      }
    ]

Json renvoyé après un appel vers users/

"activities": [
                {
                  "id": "2d555f02-159d-4405-b72e-3714b64a8741",
                  "title": "VTT",
                  "place": "TropLoin Ville",
                  "users": [
                    {
                      "directus_users_id": {
                        "id": "e4e4008f-feca-4413-9011-78b2fcdec151",
                        "first_name": "Justine",
                        "last_name": "Titegoutte",
                        "email": "[email protected]",
                        "activities": [
                          1
                        ]
                      }
                    }
                  ]
                }

Bien à vous,

Benoit

As-tu correctement fait les relations entre tes collections user et activity. Pour pouvoir faire ce que tu veux, il te faut dans ta collection directus_user un champs de type Many To Many vers ta collection activity. Ne la fais pas avec le mode automatique, mais en cliquant sur « Création en mode avancé »

De cette façon, tu pourras utiliser ta table de jointure pour faire la relation.

Ensuite, il te faut également un champs de type Plusieurs a plusieurs dans ta collection Activity qui utilisera également la même table de jointure.

De cette façon, lorsque tu feras une requête, tu pourras récupérer les utilisateurs attachés à une activité et vice versa. N’oublie pas également que dans les champs que tu donnes à l’api, tu peux également préciser le niveau de profondeur en rajoutant des points et la liste des champs.

Bonjour @jmjoary,

Merci pour ta réponse. J’ai un peu trainé, je rentre de vacances.
Je pense avoir correctement réalisé la relation M2M avec les champs avancés, comme Maxime le montre dans le cours.
Par contre, je n’ai pas réussi à m’en sortir pour faire mes get et post avec l’ApiDirectus. Ce n’est pas grave, j’ai réussi à contourner le problème.
Merci pour ta disponibilité et ta réponse.