Cakephp查找两个类别中的所有WHERE

时间:2015-06-09 14:36:52

标签: php cakephp find cakephp-2.3

我无法在cakephp 2中找到属于两个或多个类别的项目。

在我的控制器中,我有以下内容:

$kategories = array(1,2);
$options['conditions'] = array('Categorie.id' => $kategories);
$items = $this->Item->find('all',$options);

上面的查询显示了所有具有关联类别ID 1或2的项目。

如何搜索属于category.id 12(非OR)的所有项目。

我尝试使用' AND'数组没有运气:

$options['conditions'] = array('AND' => array('Categorie.id' => $kategories));

有什么想法吗?

提前致谢!!

3 个答案:

答案 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);