Le problème avec votre résultat recherché est que Cake ne vous rendra pas un tableau de résultats dépouillé si vous utilisez des conditions sur vos modèles associés.
Cela se produit parce que Cake n'utilisera ces conditions que sur votre modèle associé et vous renverra les résultats avec les conditions vraies sur vos modèles associés.
Si vous souhaitez récupérer des produits avec uniquement une catégorie spécifique, vous devez interroger le modèle de catégorie car cela vous donne la possibilité d'utiliser les conditions sur vos produits. Cela pourrait ressembler à ceci :
$this->Category->find('all', array('conditions' => array('Category.id' => 2));
Cela vous rendra uniquement la catégorie souhaitée et ses produits associés. Cependant, ce n'est pas très satisfaisant si vous souhaitez une liste, car vous devrez effectuer la conversion manuellement.
Je préférerais jeter un œil au Plugin Linkable qui devrait vous donner exactement la fonctionnalité souhaitée car elle étend Cake en utilisant des jointures comme vous l'avez fait dans votre requête. Cela permet d'obtenir des résultats avec des conditions sur vos modèles associés.