bonjour a toutes la communauté au fait je veut lier deux tables : tables cours et tables catégories
la relation est définie ainsi:
une catégorie peut avoir plusieurs cours
et un cour n'appartient qu'a une seul catégorie

10 réponses


Category hasMany Cour
Cour belongsTo Category

Il faut que ta table "cours" ait un champ category_id.

Bonjour a tous j'ai eu le meme soucie avec toi Iveivex Cisse sauf que moi les association marche tres bien et tout mais je n'arrive pas a afficher mes catégorie sur la vue cour !!

Pour ça, il faut voir avec le comportement containable de Cake.

J'ai rajouter le containabel au niveau du Appmodel mais... Enfin j'ai suivie le tuto de graf formation cakephp TP gestion des animeaux !

Est-ce que tu les récupères bien dans ton find ? Fait un debug pour voir si tu récupères les catégories quand tu récupères les cours.

Parce que si tu les passes bien à la vue, il n'y a aucune raison que tu ne puisses pas les afficher.

Oui je récupère bien les catégories
Au niveau du model Article:

class Article extends AppModel{
Public $belongsTo = array('Category', 'Brand')
}

Au niveau de mon controller Article

$categories = $this->Article->Category->find('list');
        $this->set(compact ('categories'));

Pour envoyé les catégories a ma vue article pour l'ajout d'un article.

Théoriquement tu devrais pouvoir y accéder depuis ta vue via $categories. Essaie de faire un debug dessus, mais normalement tu auras, pour chaque catégorie, l'ID en key et le name ou le title en value.

De là, tu n'as qu'à passer ça à ton select.

Au niveau de la vue

$this->HTML->input('category_id');

Sa n'affiche rien
PS: récursive -1 et le containabel

Il me semble que ça vient du recursive.
Soit tu récupère Category.id et tu peux laisser recursive à -1. Soit tu mets le recursive à 1 et tu récupères le category_id de la table article.

Avec un recursive -1 tu ne récupères que les données de la table sur laquelle tu fais le find. Il n'y a aucune jointure.

le problème été au niveau de la variable que j'envoie a ma vue :p
donc le problème a été résolu merci comme meme