I had a recent question here regarding Finding records via conditions in habtm. Now, I could search for posts within a category I searched for.
Now, my questions is how to I retrieve the categories of each post if it has two or more categories in this query:
$this->set('posts', $this->Category->find( 'first', array( 'conditions' => array( 'Category.uri' => $uri ), 'contain' => array('Post') ) ));
I'd imagine something like this:
$this->set('posts', $this->Category->find( 'first', array( 'conditions' => array( 'Category.uri' => $uri ), 'contain' => array('Post' => array( 'contain' => 'Category' )) ) ));
Here's what my models look like.
// Category Model class Category extends AppModel { var $name = 'Category'; var $hasAndBelongsToMany = array( 'Post' => array( 'className' => 'Post' ) ); var $actsAs = array('Containable'); } // Post Model class Post extends AppModel { var $name = 'Post'; var $hasAndBelongsToMany = array( 'Category' => array( 'className' => 'Category' ) ); var $actsAs = array('Containable'); var $virtualFields = array( 'date_posted' => 'DATE_SUB(Post.created, INTERVAL 7 DAY)' ); }
A sample data would be like this:
categories id name 1 holidays 2 destinations posts id title 1 I am a post 2 I am another post categories_posts post_id category_id 1 1 2 2 2 1
I am retrieving posts from the Category, 'holidays'.
Array ( [Category] => Array ( [id] => 3 [name] => holidays [uri] => holidays [created] => 2010-11-25 20:43:03 [modified] => 2010-11-25 20:43:03 ) [Post] => Array ( [0] => Array ( [id] => 1 [title] => I am a post ), [1] => Array ( [id] => 2 [title] => I am a another post ) ) )
The problem is that 1 of the posts are in two categories. I'd like to have that information also available so that I can show this in the view
/categories/view/holidays
I am a post categories: holidays, destination I am a body text
No comments:
Post a Comment