Drupal 8 - Views - Ajouter une relation vers une entité de type custom
Contexte :
Un type d'entité custom "Carte" qui utilise come table de stockage "cards". Cette entité possède une propriété "owner" qui permet de la relier à l'utilisateur qui possède la carte. (propriété du type "entity_reference").
Dans une vue listant les cartes, on peut facilement créer une relation vers le "owner" pour accèder à ses informations.
Par contre sur une vue listant les utilisateurs, on ne peut pas avoir la relation inverse, liant les utilisateurs à leur carte. Pour cela il faut utiliser le hook_views_data_alter :
/** * Implements hook_views_data_alter(). */ function MONMODULE_views_data_alter(array &$data) { $data['users_field_data']['cards'] = [ 'title' => t("Les cartes de l'utilisateur"), 'help' => t("Permet de relier l'utilisateur courant à ses cartes"), 'relationship' => [ 'group' => t('Cartes'), 'label' => t("Cartes de l'utilisateur"), 'base' => 'cards', // nom de la table stockant nos entités custom 'base field' => 'owner', // nom du champ sur lequel faire la jointure 'relationship field' => 'uid', // nom du champ cible sur lequel faire la jointure (de la table users_field_data) 'id' => 'standard', ], ]; }
Merci à flocondetoile sur IRC pour m'avoir mis sur la bonne piste !