Bonjour,

Depuis hier, je bloque sur un pbme : je cherche à utiliser la methode "Many-to-many Relationship" pour obtenir mes données mais à chaque fois j'ai l'erreur : No reference from table RelationsTermes to table TermesTaxonomies.

Voila rapidement les 3 tables (et les 3 classes concernées) :
  • Idees => ces sont des idées (éléments centrale de l'appli)
  • RelationsTermes => pt de jointure
  • TermesTaxonomies => des termes qui st des tag ou des catégories (même méthode que wordpress)


Je cherche donc, à partir d'une idée, à récuperer TermesTaxonomies en passant par la table de jointure RelationsTermes.

Voici le code SQL
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
 
CREATE TABLE IF NOT EXISTS `idee` (
  `id_idee` int(5) NOT NULL auto_increment,
  `date_idee` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `texte_idee` text NOT NULL,
  `titre_idee` varchar(25) NOT NULL,
  `statut_idee` enum('new','old','normal') default 'new',
  `id_mbr` int(5) NOT NULL,
  PRIMARY KEY  (`id_idee`),
  KEY `FK_idee_id_mbr` (`id_mbr`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 
CREATE TABLE IF NOT EXISTS `relation_terme` (
  `id_idee` int(5) NOT NULL,
  `id_tt` int(5) NOT NULL,
  PRIMARY KEY  (`id_idee`,`id_tt`),
  KEY `FK_relation_terme_id_tt` (`id_tt`),
  KEY `FK_relation_terme_id_idee` (`id_idee`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `terme_taxonomie` (
  `id_tt` int(5) NOT NULL auto_increment,
  `taxonomy_tt` enum('tag','categorie') NOT NULL default 'tag',
  `description_tt` tinytext,
  `count_tt` int(5) default '0',
  `id_terme` int(5) NOT NULL,
  PRIMARY KEY  (`id_tt`),
  KEY `FK_terme_taxonomie_id_terme` (`id_terme`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 
 
ALTER TABLE `idee`
  ADD CONSTRAINT `FK_idee_id_mbr` FOREIGN KEY (`id_mbr`) REFERENCES `membres` (`id_mbr`);
 
ALTER TABLE `relation_terme`
  ADD CONSTRAINT `FK_relation_terme_id_idee` FOREIGN KEY (`id_idee`) REFERENCES `idee` (`id_idee`),
  ADD CONSTRAINT `FK_relation_terme_id_tt` FOREIGN KEY (`id_tt`) REFERENCES `terme_taxonomie` (`id_tt`);
 
ALTER TABLE `terme_taxonomie`
  ADD CONSTRAINT `FK_terme_taxonomie_id_terme` FOREIGN KEY (`id_terme`) REFERENCES `terme` (`id_terme`);
Voici les codes PHP

Idees.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
15
16
17
18
19
20
21
 
<?php
class Idees extends Zend_Db_Table_Abstract
{
    protected $_rowClass = 'Idee';
 
    protected $_name = 'idee';
    protected $_primary = 'id_idee';
 
    protected $_dependentTables = array( 'RelationsTermes', 'Vote', 'Commentaires');
 
    protected $_referenceMap    = array(
        'Membres'    => array(
            'columns'            => array('id_mbr'),
            'refTablesClass'    => 'Membres',
            'refColumns'        => array('id_mbr')
        )
   );                
}
 
?>
RelationsTermes.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
15
16
17
18
19
20
21
22
 
<?php
class RelationsTermes extends Zend_Db_Table_Abstract
{
    protected $_name = 'relation_terme';
    protected $_primary = array('id_idee','id_tt');
 
    protected $_referenceMap    = array(
        'Idee'                => array(
            'columns'            => array('id_idee'),
            'refTableClass'        => 'Idees',
            'refColumns'        => array('id_idee')
        ),
        'Taxonomy'    => array(
            'columns'            => array('id_tt'),
            'refTablesClass'    => 'TermesTaxonomies',
            'refColumns'        => array('id_tt')
        )
   );
}
 
?>
TermesTaxonomies.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
15
16
17
18
19
 
<?php
class TermesTaxonomies extends Zend_Db_Table_Abstract
{
    protected $_name = 'terme_taxonomie';
    protected $_primary = 'id_tt';
 
    protected $_dependentTables = array('RelationsTermes');
 
    protected $_referenceMap    = array(
        'Termes'    => array(
            'columns'            => array('id_terme'),
            'refTablesClass'    => 'Termes',
            'refColumns'        => array('id_terme')
        )
   );
}
 
?>
J'espère que quelqu'un pourra trouver un erreur ou juste une idées. Je me casse la tête depuis hier ...

Nicolas