Recherche de contacts sans relations (API)
Comment puis-je trouver des contacts utilisant l'APIv4 qui n'ont pas de relations d'un type spécifique?
Je veux les n premiers contacts classés par un champ de date répondant à diverses conditions à l'exclusion de ceux avec une relation de type X.
Il y a plusieurs façons de le faire avec plusieurs appels ou une boucle php, mais ce serait bien de pouvoir le faire en un seul appel.
En SQL, une option utilisant une sous-requête est:
SELECT * FROM Contacts
WHERE <various things>
AND contact_id NOT IN (SELECT contact_id_a FROM Relationships WHERE <conditions>)
ORDER BY <something>
LIMIT <n>
APIv4 peut-il produire quelque chose comme ça?
Réponses
Oui, vous pouvez! J'ai un peu manipulé l'explorateur APIv4 et j'ai trouvé ceci:
L'astuce consiste à joindre RelationshipCachele (s) type (s) de relation que vous souhaitez exclure (notez que les guillemets doubles '"Parent of"'sont nécessaires car vous passez une chaîne littérale et non le nom d'un champ ou d'une autre expression SQL). Et puis, dans la clause WHERE, spécifiez que vous voulez que la relation_cache.id soit NULL.
Le GroupByest nécessaire car votre jointure peut potentiellement produire des résultats en double si le contact a plus d'une relation, bien que techniquement ce soit impossible avec cette requête, vous pouvez donc essayer de la laisser désactivée.