2010-11-26 22 views
0

J'ai deux tables. La première table est une table de catégories appelée categories, la seconde est une table de documents appelée documents. J'essaye de créer une table de jointure qui permettra à plusieurs catégories d'être appliquées à plusieurs documents et de faire cuire tout en quelques secondes avec CakePHP (auquel je suis un noob).cakephp cuire 2 tables avec une table de jointure

Je l'ai utilisé mysql comme ceci pour la DB:

CREATE TABLE `categories` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `cat_name` varchar(100) default NULL, 
    PRIMARY KEY (`id`) 
) TYPE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `documents` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    `title` varchar(50) default NULL, 
    `size` varchar(10) default NULL, 
    `file` varchar(50) default NULL, 
    `date` date default NULL, 
    `created` datetime default NULL, 
    `modified` datetime default NULL, 
    `status` tinyint(1) NOT NULL default '0', 
    PRIMARY KEY (`id`) 
) TYPE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `categories_documents` (
    `category_id` int(10) unsigned NOT NULL default '0', 
    `document_id` int(10) unsigned NOT NULL default '0', 
    PRIMARY KEY (`category_id`,`document_id`) 
) TYPE=MyISAM DEFAULT CHARSET=utf8; 

... pour les tables et était sous l'impression que je suis ce que je lis dans la documentation qu'il faisait cuire automatiquement par magie. Cependant, je reçois beaucoup d'erreurs de colonne inconnues. Je me demande si je me suis trompé sur les conventions de nommage et si quelqu'un pouvait me mettre juste avant que je passe trop de temps à creuser trop profond?

Répondre

1

Les catégories_documents auront besoin d'un champ "id" qui doit être la clé primaire. Cela devrait le réparer. Pour plus d'informations, lisez la documentation HABTM.

+0

Ma source d'origine était défectueuse, la documentation pointée par les deux réponses indiquait que faire les deux identifiants dans le fichier de lien primaire était une mauvaise pratique dans CakePHP et l'ajout de l'ID décrit ici fixe tout. gâteau et la magie tout est arrivé. – adamg2000

+0

Super de savoir que vous l'avez réparé! – Nigel

1

Si je vous comprends bien, je pense que ce lien peut vous aider à expliquer les choses à mieux que moi: http://book.cakephp.org/view/872/Joining-tables

Mon expérience a été écrit manuellement tous les codes du modèle, jamais cuire au four utilisé.