Post model:

public $hasMany = array(
        'RelatedPost' => array(
                'className' => 'Post',
                'foreignKey' => false,
                'limit' => 5,
                'order' => array('RelatedPost.created' => 'DESC'),
                'finderQuery' => 'SELECT RelatedPost.id, RelatedPost.title
                                                FROM posts AS RelatedPost
                                                INNER JOIN posts_tags AS PostTag
                                                ON PostTag.post_id = 
RelatedPost.id
                                                WHERE PostTag.tag_id IN
                                                (SELECT tag_id FROM posts_tags 
WHERE post_id = {$__cakeID__$})
                                                AND RelatedPost.id != 
{$__cakeID__$}'                   
        )
);

public function fetch($id)
{
        return $this->find(
                'first',
                array(
                        'conditions' => array(
                                $this->alias.'.id' => $id
                        )
                )
        );
}

Add RelatedPost.slug to the query if, like me, you prefer to pass
slugs. And change the fetch method, of course.

I included the order just to show that it can be.

On Sun, Dec 16, 2012 at 3:20 PM, MetZ <met...@gmail.com> wrote:
> Okei, so I have a HABTM setup:
> - posts
> - tags
> - posts_tags
>
> When creating posts => select multiple tags: example: Tag1, Tag2, Tag3
>
> Each selected tag is saved to posts_tags: id:1, post_id: 44, tag_id: 3  (and
> so on).
>
> Now, displaying my posts, and listing the selected tags, is no problem.
> Everything is working flawlessly.
>
> However, I would like to have widget "You might also like these posts" =>
> list 5 posts with similar content (using the same tags as the post beeing
> read).
>
> So here I came across some difficulty finding similar posts according to
> selected tags.
>
> Example: Is Post.id = 44  (beeing read) have Tag.id = 1, 3 ,4 assigned
>
> How can I retrieve 5 other posts that have the same Tag.id assigned, and
> exclude the Post.id beeing read from the find??
>
> I guess I will need to use some kind of join/grouping, but I am a total noob
> regarding those things, so any help on this will be GREATLY appreciated!!
>
> Thanks for your time!
>
> -Tom
>
> --
> Like Us on FaceBook https://www.facebook.com/CakePHP
> Find us on Twitter http://twitter.com/CakePHP
>
> ---
> You received this message because you are subscribed to the Google Groups
> "CakePHP" group.
> To post to this group, send email to cake-php@googlegroups.com.
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com.
> Visit this group at http://groups.google.com/group/cake-php?hl=en.
>
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com.
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.


Reply via email to