CakePHP - несколько фильтров с использованием HABTM - PullRequest
0 голосов
/ 25 марта 2012

У меня есть следующие модели: свойство и характеристика

У них есть отношение HABTM.

Я хочу создать запрос, который может принимать произвольное число характеристических_идентификаторов, и искать свойства, которые имеютхарактеристика x, характеристика Y, характеристика Y, характеристика Z и т. д.

В настоящий момент я могу управлять только IN (), что эквивалентно приведенному выше, используя OR.

Даже указатель того, как необработанныйБыло бы полезно использовать SQL для этого, так как я могу преобразовать его в CakePHP find.

1 Ответ

0 голосов
/ 26 марта 2012

Возможно, вы захотите создать следующий метод внутри вашей модели недвижимости:

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