Problem z twoim pożądanym wynikiem polega na tym, że Cake nie zwróci ci obciętej tablicy wyników, jeśli użyjesz warunków w powiązanych modelach.
Dzieje się tak, ponieważ Cake użyje tych warunków tylko w powiązanym modelu i zwróci wyniki z warunkami spełnionymi w powiązanych modelach.
Jeśli chcesz odzyskać produkty tylko z określoną kategorią, musisz wykonać zapytanie za pomocą modelu kategorii, ponieważ daje to możliwość użycia warunków dla twoich produktów. To może wyglądać mniej więcej tak:
$this->Category->find('all', array('conditions' => array('Category.id' => 2));
W ten sposób zwrócisz tylko żądaną kategorię i powiązane z nią produkty. Nie jest to jednak zbyt satysfakcjonujące, jeśli chcesz otrzymać listę, ponieważ musisz ręcznie wykonać konwersję.
Wolałbym przyjrzeć się wtyczce, którą można łączyć co powinno dać ci dokładnie pożądaną funkcjonalność, ponieważ rozszerza Cake o używanie złączeń, tak jak to zrobiłeś w zapytaniu. Umożliwia to uzyskanie wyników z warunkami na powiązanych modelach.