我无法在cakephp 2
中找到属于两个或多个类别的项目。
在我的控制器中,我有以下内容:
$kategories = array(1,2);
$options['conditions'] = array('Categorie.id' => $kategories);
$items = $this->Item->find('all',$options);
上面的查询显示了所有具有关联类别ID 1或2的项目。
如何搜索属于category.id 1
和2
(非OR)的所有项目。
我尝试使用' AND'数组没有运气:
$options['conditions'] = array('AND' => array('Categorie.id' => $kategories));
有什么想法吗?
提前致谢!!
答案 0 :(得分:1)
您可以使用IN
运算符:
$options['conditions'] = array('Categorie.id IN' => $kategories);
或者在这种情况下,如果您总是想要查找这两个类别,请使用AND
:
$options['conditions'] = array('AND' => array(
array('Categorie.id' => $kategories[0]),
array('Categorie.id' => $kategories[1])
));
答案 1 :(得分:0)
试试这个:
$kategories = array(1,2);
$kategories = implode(',',$kategories );
$options['conditions'] = array('Categorie.id in ( ' . $kategories . ' )') ;
$items = $this->Item->find('all',$options);
答案 2 :(得分:0)
我对此有了进一步了解并找到了解决方案:
要查找属于category.id 1和2(非OR)的所有项目,我只需要添加一个'组'我发现的参数是这样的:
$options['group'] = array('Item.id HAVING COUNT(DISTINCT Categorie.id) > 1');
完整的查询(工作):
$kategories = array(1,2);
$options['conditions'] = array('Categorie.id' => $kategories);
$options['group'] = array('Item.id HAVING COUNT(DISTINCT Categorie.id) > 1');
$items = $this->Item->find('all',$options);