Bonjour,

J'ai un petit soucis que je ne comprends pas comment le résoudre, j'utilise une BDD MySQL développer par une tierce personne et qui ne respecte aucune norme de Cake :)

Ce que je fais

**Table articles**
  `id_article` int(11) NOT NULL AUTO_INCREMENT,
  `label_article` varchar(255) NOT NULL,
  `cat_article` int(11) NOT NULL,
  `scat_article` int(11) NOT NULL,
  `codebarre_article` varchar(60) NOT NULL,
  `prix_ttc_article` varchar(50) NOT NULL,
  `prix_public_article` varchar(20) NOT NULL,
  `photo_article` varchar(255) NOT NULL,
  `pcb_article` varchar(255) NOT NULL,
  `dispo_article` int(11) NOT NULL,
  `minstock_article` int(11) NOT NULL,
  `nbrpoints_fid_article` int(11) NOT NULL,
  `etat_article` int(11) NOT NULL,
  PRIMARY KEY (`id_article`)
**Table categories**
`id_cat` int(11) NOT NULL AUTO_INCREMENT,
  `label_cat` varchar(255) NOT NULL DEFAULT '',
  `photo_cat` varchar(255) NOT NULL DEFAULT '',
  `parent_cat` int(11) NOT NULL,
  `ordre_cat` int(11) NOT NULL,
  PRIMARY KEY (`id_cat`),
  UNIQUE KEY `id_cat` (`id_cat`)

dans mon controller Articles
$d = $this->Article->find('first', [
'conditions' => ['dispo_article' => 1],
'contain' => ['Cat']
]);

debug($d) => vide;
print_r($d) => contient des enregistrements

par contre si je commente 'contain' => ['Cat'] j'ai un résultat !

Merci pour votre aide.

4 réponses


Bonjour.
Il te faut définir les associations manuellement dans les Models concernées, ce n'est pas plus difficiles que ça Associations : Lier les models.

Bonjour agencep,

Il faut déjà commencé par lier les deux table par une relation avec des clés pui la suite comme @Lartak l'a mentionné

Merci

Oui, il a commencé à relier deux tables, donc je suppose que cela ne devrait pas être un problème

La preuve que non puisque lorsqu'il tente de faire la relation entre les deux tables il n'obtient aucun enregistrement.
Au passage, ta liaison ne risque pas de fonctionner étant donné que tu définis Cat alors que la table se nomme categories.
Ou alors, s'il a déja fait l'association dans la table concernée, il devrait au moins nous montrer le code correspondant.