2012-03-25 81 views
0

我有以下型號:屬性和特性CakePHP - 使用HABTM的多個過濾器

他們有一個HABTM關係。

我想建立一個查詢,可以採取characteristic_ids任意數量和搜索具有特徵X與特徵Y和特點ž等

此刻,我只能管理一個IN特性(),它是上面使用OR的等價物。

即使是原始SQL如何執行此操作的指針也會很有用,因爲我可以將它轉換爲CakePHP查找。

回答

0

您可能希望創建屬性模型內部下面的方法:

function getProperties($characteristicsIDs) { 
    $ids = $this->characteristicsProperty->find('list', array(
     'fields' => array('property_id', 'property_id'), 
     'conditions' => array('characteristic_id' => $characteristicsIDs), 
     'group' => 'property_id having count(*) = '.count($characteristicsIDs), 
    )); 

    $ids = array_keys($ids); 

    return $ids; 
} 
你控制器內部

然後:

$ids = $this->Property->getProperties($propertiesIDs); 
$this->Property->find('all', array(
    'conditions' => array(
    'Property.id' => $ids 
    ) 
)); 
+0

對我的作品。謝謝。 – timstermatic 2012-03-30 10:53:34

+0

@wiseguysonly然後你可以驗證答案。 – 2012-03-31 00:33:12

+0

好的。歡呼的微調! – timstermatic 2012-05-23 10:22:39