我们有Ebooks HABTM标签。我们尝试选择属于ID为160的标签的电子书。
两者都使用可包含的行为,所以在Ebooks Controller中我写了以下内容:
$this->Ebook->contain('Tag.id = "160"');
$ebooks = $this->Ebook->find('all');
根据这本书,这应该返回所需的结果。而不是那样,所有电子书的列表都会被退回。
另请注意,运行两个查询,第一个返回所有Ebooks的列表,第二个返回应返回的电子书。有没有人有任何想法?
提前致谢
答案 0 :(得分:2)
是的,此查询显示“查找所有电子书,并随身携带所有ID为160的标签。
contain
不限制主要结果,仅限制相关结果。
您需要为HATBM表创建一个SQL JOIN
并在其上过滤主要结果,如下所示:
$this->Ebook->bindModel(array('hasOne' => array('EbooksTag')));
$this->Ebook->find('all', array(
'conditions' => array('EbooksTag.tag_id' => 160)
));