Submitted by Nicolas Poulain on
Bonjour,
J'ai dans ma base drupal quatre tables issues d'une autre application. Je les ai intégrées comme des entités et je souhaite les afficher dans views mais je rencontre un problème avec les jointures.
Pour simplifier disons qu'il s'agit d'un schéma comme sur l'image jointe
(voir aussi
http://www.plantuml.com:80/plantuml/img/RSvH2e0W30RWzy7ku0KybDW2mJPJUuhk... )
J'ai dans MonModule le hook_entity_info suivant et les contrôleurs qui vont bien.
Dans views, l'entité film permet d'afficher pour un film, le nom des acteurs, cela fonctionne bien.
Mon problème : comment faire pour afficher aussi le nom des personnes de l'équipe ?
Merci pour votre aide.
<?php
function MonModule_entity_info(){
$entities = array();
$entities['film'] = array(
'label' => t('Film Entity'),
'base table' => 'C_film',
'entity class' => 'Entity',
'controller class' => 'EntityAPIController',
'views controller class' => 'EntityDefaultViewsController',
'uri callback' => 'film_uri',
'entity keys' => array( 'id' => 'fid'),
);
$entities['equipe'] = array(
'label' => t('equipe Entity'),
'base table' => 'C_equipe',
'entity class' => 'Entity',
'controller class' => 'EntityAPIController',
'views controller class' => 'EquipeViewsController',
'uri callback' => 'equipe_uri',
'entity keys' => array( 'id' => 'eid'),
);
$entities['acteur'] = array(
'label' => t('acteur Entity'),
'base table' => 'C_acteur',
'entity class' => 'Entity',
'controller class' => 'EntityAPIController',
'views controller class' => 'acteurViewsController',
'uri callback' => 'acteur_uri',
'entity keys' => array( 'id' => 'aid'),
);
$entities['personne'] = array(
'label' => t('personne Entity'),
'base table' => 'C_personne',
'entity class' => 'Entity',
'controller class' => 'EntityAPIController',
'views controller class' => 'personneViewsController',
'uri callback' => 'personne_uri',
'entity keys' => array( 'id' => 'pid'),
);
}
class EquipeViewsController extends EntityDefaultViewsController {
public function views_data() {
$data = parent::views_data();
$data['C_equipe']['table'] = array(
'group' => t('C_equipe'),
'join' => array(
'C_film' => array(
'left_field' => 'fid',
'field' => 'fid',
),
),
);
return $data;
}
}
class ActeurViewsController extends EntityDefaultViewsController {
public function views_data() {
$data = parent::views_data();
$data['C_acteur']['table'] = array(
'group' => t('C_acteur'),
'join' => array(
'C_film' => array(
'left_field' => 'fid',
'field' => 'fid',
),
),
);
return $data;
}
}
class PersonneViewsController extends EntityDefaultViewsController {
public function views_data() {
$data = parent::views_data();
$data['C_personne']['table'] = array(
'group' => t('C_personne'),
'join' => array(
'C_film' => array(
'left_table' => 'C_acteur',
'left_field' => 'pid',
'field' => 'pid',
),
),
);
return $data;
}
}
?>
Fichier attaché | Taille |
---|---|
schemaFilm.png | 8.56 Ko |