Bonjour à toutes et à tous,
J'ai un problème sur CakePHP concernant les relations HABTM (HasAndBelongsToMany).
J'ai une table Posts. Chaque post peut être relier à une ou plusieurs catégories. Une catégorie peut appartenir à plusieurs posts.
En terme de MCD cela donne ceci (en simplifié).
posts(id, title, content)
categories(id, name)
categories_post(category_id, post_id)
(en rouge les clés primaires)
Voici mes deux models (situé dans app/models)
Et mon PostController :
Mes catégories sont listés dans une page et lorsque je clique sur une catégorie, j'aimerais afficher les posts liés à cette catégorie (avec la fonction category dans laquelle je passe l'id de la catégorie sélectionnée). Et c'est la tout mon problème, je n'arrive pas à faire appel à find pour faire apparaitre ces posts.
Quelqu'un peut-il m'expliquer de manière claire et simple comment procède-t-on ?
PS : j'ai déjà lu la doc, des forums (anglais/français) et je n'ai pas trouvé d'explication claire et précise.
Merci de votre aide.
Modifié par ashesheart (25 Feb 2011 - 15:08)
J'ai un problème sur CakePHP concernant les relations HABTM (HasAndBelongsToMany).
J'ai une table Posts. Chaque post peut être relier à une ou plusieurs catégories. Une catégorie peut appartenir à plusieurs posts.
En terme de MCD cela donne ceci (en simplifié).
posts(id, title, content)
categories(id, name)
categories_post(category_id, post_id)
(en rouge les clés primaires)
Voici mes deux models (situé dans app/models)
class Post extends AppModel{
var $hasAndBelongsToMany = array('Category');
}
class Category extends AppModel{
var $hasAndBelongsToMany = array('Post');
}
Et mon PostController :
class PostsController extends AppController{
function category($id = null){
}
}
Mes catégories sont listés dans une page et lorsque je clique sur une catégorie, j'aimerais afficher les posts liés à cette catégorie (avec la fonction category dans laquelle je passe l'id de la catégorie sélectionnée). Et c'est la tout mon problème, je n'arrive pas à faire appel à find pour faire apparaitre ces posts.
Quelqu'un peut-il m'expliquer de manière claire et simple comment procède-t-on ?
PS : j'ai déjà lu la doc, des forums (anglais/français) et je n'ai pas trouvé d'explication claire et précise.
Merci de votre aide.
Modifié par ashesheart (25 Feb 2011 - 15:08)