【发布时间】:2014-05-22 19:49:24
【问题描述】:
我正在尝试执行搜索,作为条件,它必须只返回具有一定数量的关联记录的记录。
目前我有一个模型(Bands)和一个关联模型 thourgh hasmany(Songids)。每个乐队可以有很多歌曲。
在这个特定的搜索中,我想返回 4 个乐队的结果,这些乐队有至少 10 个相关联的歌曲名称。
我尝试在查找过程中使用“HAVING”条件执行此操作,并在 Songid 模型中使用“COUNT(Songid.band_id)”的虚拟字段执行此操作,但它只返回总数,而不仅仅是所选字段。
我怎样才能做到这一点?我在想类似的东西:
$random = $this->Band->find('all', array(
'fields' => array('Band.band'),
'order' => 'rand()',
'limit' => 4,
'contain' => array(
'Songid' => array(
'conditions' => array(
'band_id COUNT' => 2)
)
)
)
);
最后一部分“'band_id COUNT' => 2”应该可以解决问题,但我无法让它发挥作用。 有什么想法吗?
编辑:我可以先查找所有,然后再查找每个关联模型的计数,但我正在寻找“一个查找,不处理”的解决方案。
【问题讨论】: