CakePhp条件与相关的HABTM模型

时间:2014-11-13 19:11:31

标签: cakephp join find conditional-statements has-and-belongs-to-many

我有两个模型:文章 Hashtag 与HABTM关系。 所以在我的数据库中有表格文章 id,文本等),主题标签 id,value )和连接表 articles_hashtags article_id,hashtag_id )。 现在我想找到所有带有给定hashtag_id的文章以及其他条件。 我的尝试是首先找到所有带有给定标签的文章,将它们保存在一个数组中:

$this->query("SELECT * FROM articles_hashtags WHERE hashtag_id=" . $hashtagId;");

然后找到包含其他条件的文章,在第二个查询中排序等,如下所示:

 $this->find('all', array('conditions' => array("Articles.id" => $articleIds),...

是否可以在一个查询中找到带有主题标签条件的文章?

1 个答案:

答案 0 :(得分:0)

首先,不要使用->query()。只有你做了一些不寻常的事情(这不是),才需要它。

您可以通过多种方式执行您希望执行的操作。最简单的可能就是:

//Hashtag model
$this->find('first', array(
    'conditions' => array(
        'id' => $hashtagId
    ),
    'contain' => array(
        'Article'
    )
));

这使用CakePHP's Containable Behavior。习惯它 - 它太棒了。

或者,您可以使用JOINs

或者,您可以为您的HABTM协会创建一个模型" ArticleHashtag"并使用它来检索(可能再次使用Containable)。