Bonjour la communauté,

je revient vers vous pour un souci au niveau d'une requête DQL, en voici en dessous les données :

============================/ schema.yml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Film:  
      tableName:  film
      actAs:  
        Timestampable:  ~
        Sluggable:  
           unique:  true
           fields:  [titre]
           canUpdate:     true
      columns:  
           titre:  {type:  string(255)} 
           date_sortie:  {type:  date, past:  true} 
           affiche:  {type:  string(255)}
           synopsis:  {type:  string}
           realisateur:  {type:  string(255)}
           genre_id:  {type:  integer, notnull:  true}
           duree:  {type:  string(255)}
      relations:  
             Annuaire_pros:  { local:  film_id, foreign:  annuaire_pro_id, class:  Annuaire_pro, refClass:  Casting_equipe, foreignAlias:  Casting_equipes}
 
Casting_equipe:  
      tableName:  casting_equipe
      actAs:  
        Timestampable:  ~
      columns:  
          film_id:  {type:  integer, notnull:  true}
          annuaire_pro_id:  {type:  integer, notnull:  true}
      relations:  
         Film:         {foreign:  id, foreignAlias:  Casting_equipes, local:  film_id}
         Annuaire_pro:  {foreign:  id, foreignAlias:  Casting_equipes, local:  annuaire_pro_id}
 
Annuaire_pro:  
      tableName:  annuaire_pro
      actAs:  
        Timestampable:  ~
        Sluggable:  
           unique:  true
           fields:  [nom]
           canUpdate:     true
      columns:  
          nom:  {type:  string, notnull:  true}
          img:  {type:  string(255)}
          tel:  {type:  string, notnull:  true}
          fax:  {type:  string, notnull:  true}
          site:  {type:  string, notnull:  true}
          email:  { type:  string(255), unique:  true, email:  true }
          adresse:  {type:  string, notnull:  true}
          entreprise:  { type:  boolean, notnull:  true, default:  0 }
          portfolio:  {type:  string, notnull:  true}
          ville_id:  {type:  integer, notnull:  true}
          user_id:  {type:  integer}
      relations:  
         Films:  { local:  annuaire_pro_id, foreign:  film_id, class:  Film, refClass:  Casting_equipe, foreignAlias:  Casting_equipes}
         Categorie_annuaires:  {local:  annuaire_pro_id, foreign:  categorie_annuaire_id, class:  Categorie_annuaire, refClass:  Pro_categorie}
 
Categorie_annuaire:  
      tableName:  categories_annuaire
      actAs:  
        Timestampable:  ~
        Sluggable:  
           unique:  true
           fields:  [cat_nom]
           canUpdate:     true
      columns:  
          cat_nom:  {type:  string(255), notnull:  true}
      relations:  
         Annuaire_pros:  { local:  categorie_annuaire_id, foreign:  annuaire_pro_id, foreignAlias:  Pro_categorie, class:  Annuaire_pro, refClass:  Pro_categorie}          
 
Pro_categorie:  
      tableName:  pro_categorie
      actAs:  
        Timestampable:  ~
        Sluggable:  
           unique:  true
           fields:  [annuaire_pro_id, categorie_annuaire_id]
           canUpdate:     true
      columns:  
          annuaire_pro_id:  {type:  integer, notnull:  true}
          categorie_annuaire_id:  {type:  integer, notnull:  true}
      relations:  
         Annuaire_pro:  {foreign:  id, foreignAlias:  Pro_categories, local:  annuaire_pro_id}
         Categorie_annuaire:  {foreign:  id, foreignAlias:  Pro_categories, local:  categorie_annuaire_id}
=======================================/ Explication
Comme vous avez pu lire sur le schéma se sont 5 tables dont trois principales et deux intermédiaires c'est des personnes (Annuaire_pro) qui ont fait des apparition dans des films (Film) et puis ces personne sont catégorisé (Categorie_annuaire) selon leur métiers


=====================================/ requette SQL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT nom,img, titre, cat_nom
FROM film 
inner join casting_equipe on film.id = casting_equipe.film_id 
inner  join annuaire_pro on casting_equipe.annuaire_pro_id = annuaire_pro.id
inner  join pro_categorie on pro_categorie.annuaire_pro_id = annuaire_pro.id	
inner  join categories_annuaire on pro_categorie.categorie_annuaire_id = categories_annuaire.id
where film.id = 1
and cat_nom="Acteur"
Chose qui fonctionne

==================================/ Requette DQL
/**********www/sitename/lib/model/FilmTable.class.php************/

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function getFilmActeurs($id)
    {
    	$q = $this->createQuery('a')
    	->select('nom', 'img')
    	->from('Film')
    	->innerJoin('Casting_equipe')
    	->innerJoin('Annuaire_pro')
    	->innerJoin('Pro_categorie')
    	->innerJoin('Categorie_annuaire')
    	->where('film.id = ?', $id)
    	->andWhere('cat_nom = "Acteur"')
    	->execute();
        return $q;
    }
et pourtant ça marche pas !!