2015-06-09 21 views
0

我無法找到屬於cakephp 2中兩個或多個類別的項目。Cakephp在兩個類別中查找所有地方

在我的控制器我有以下幾點:

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

上面的查詢表明,要麼相關類別的ID 1或2

我如何可以搜索所有項目的所有項目中,屬於category.id 12(不是OR)。

我使用 '與' 陣列,沒有運氣嘗試:

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

任何想法?

在此先感謝!

回答

0

我在這方面看起來更進一步,發現解決方案:

要查找的所有項目,屬於category.id 1和2(或不在)我剛一「組」參數添加到我找到這樣:

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

試試這個:

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


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