Bonjour,

Ça fait plusieurs heures que je rame à essayer de récupérer des données HABTM par un finder personnalisé qui extend la fonction find('list') sur une table et je n'obtient que des erreurs.
J'ai essayé de plusieurs façon et je me retrouve presque à chaque fois avec:

"Nom table de jointure" is missing from the belongsToMany results. Results cannot be created.

Ce que j'ai fait:

$query->contain([
    'Tags' => [
        'foreignKey' => false,
        'queryBuilder' => function($q) {...}
    ]
 ]);

foreignKey est à false comme indiqué dans la book:
"If you need full control over the query that is generated, you can tell contain() to not append the foreignKey constraints to the generated query. In that case you should use an array passing foreignKey and queryBuilder".
http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#passing-conditions-to-contain

Si je comprend bien l'ennoncé de l'erreur, il m'indique que c'est impossible de retirer la table de jointure des resultats car elle l'utilise pour la requête.

Je précise que mon finder est un finder de la table Tags et qu'il fonctionnne de manière spécifique pour regrouper des mots clés selon certaine conditions. Mais même avec un findList() simple cela ne fonctionne pas.
Je pourrais dans ma table qui utilise les tags, convertir les données dans un champ virtuelle (donc après find), mais ça veut dire que j'aurais 2 fois la même fonction à 2 endroits différents...

Quelqu'un pour m'éclairer ?
Merci

1 réponse


Je crois que si tu retire la foreignKey tu dois faire en sorte de récupérer les champs de la table de liaison