Probleme de "many-to-many Relationship"
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:
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:
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:
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:
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