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

Cakephp Find all WHERE in two categories

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

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

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

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

如何搜索属于 category.id 1 AND 2(不是 OR)的所有项目。

我尝试使用 'AND' 数组,但没有成功:

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

有什么想法吗?

提前致谢!!

您可以使用 IN 运算符:

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

或者在那种情况下,如果您总是想查找这两个类别,请使用 AND:

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

试试这个:

$kategories = array(1,2);
$kategories = implode(',',$kategories );


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

我仔细研究了一下,找到了解决方案:

要查找属于 category.id 1 和 2(不是 OR)的所有项目,我只需在我的查找中添加一个 'group' 参数,如下所示:

$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);