2012-05-21 3 views
0

Предположим, у вас есть такие модели отношений:CakePHP HABTM глубокие условия

Предложение HABTM Категория

Как бы вы построить условия поиска, чтобы найти все категории, которые имеют по крайней мере одно предложение. В то же время предложение должно быть Offer.enabled => 1. Итак, найдите все категории с хотя бы одним включенным предложением. Условий проверки модели предложения несколько, но как только я могу проверить включенность, я думаю, что смогу проверить любое другое поле.

Я могу привязать модель habtm к категории, но в этом случае я не могу проверить условие Offer.enabled. Может быть, каким-то образом использовать сдерживаемые? Запрос SQL будет:

SELECT DISTINCT Category.nome from categories as Category 
LEFT JOIN categories_offers AS CategoriesOffer 
ON (CategoriesOffer.category_id = Category.id) 
LEFT JOIN offers as Offer ON (CategoriesOffer.offer_id = Offer.id) 
WHERE Offer.enabled = 1 

Спасибо

ответ

0

Используйте conditions ключ в определении отношений, чтобы установить отношения, только если Offer.enabled = 1. Взято с book. например:

class Category extends Model { 
    public $hasAndBelongsToMany = array(
     'Offer' => array(
      'conditions' => array('Offer.enabled' => 1) 
     ) 
    ); 
} 
+0

Спасибо. Это нормально только в том случае, если мне всегда нужно это условие. Дело в том, что условия всегда меняются. Однако я смог получить результаты, используя связанное поведение. – slacky