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);
我在 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);