我有两个模型:文章和 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),...
是否可以在一个查询中找到带有主题标签条件的文章?
答案 0 :(得分:0)
首先,不要使用->query()
。只有你做了一些不寻常的事情(这不是),才需要它。
您可以通过多种方式执行您希望执行的操作。最简单的可能就是:
//Hashtag model
$this->find('first', array(
'conditions' => array(
'id' => $hashtagId
),
'contain' => array(
'Article'
)
));
这使用CakePHP's Containable Behavior。习惯它 - 它太棒了。
或者,您可以使用JOINs。
或者,您可以为您的HABTM协会创建一个模型" ArticleHashtag"并使用它来检索(可能再次使用Containable)。