Il problema con il risultato desiderato è che Cake non ti restituirà un array di risultati spogliato se usi le condizioni sui tuoi modelli correlati.
Ciò accade perché Cake utilizzerà queste condizioni solo sul tuo modello correlato e ti restituirà i risultati con condizioni vere sui tuoi modelli correlati.
Se desideri restituire i prodotti con una sola categoria specifica, devi eseguire una query tramite il modello di categoria in quanto ciò ti dà la possibilità di utilizzare le condizioni sui tuoi prodotti. Potrebbe assomigliare a questo:
$this->Category->find('all', array('conditions' => array('Category.id' => 2));
Questo ti restituirà solo la Categoria desiderata e i suoi Prodotti associati. Tuttavia, questo non è molto soddisfacente se desideri un elenco, perché dovresti eseguire manualmente la conversione.
Preferirei dare un'occhiata al Linkable Plugin che dovrebbe darti esattamente la funzionalità desiderata poiché estende Cake utilizzando i join come hai fatto nella tua query. Ciò consente di ottenere risultati con condizioni sui modelli correlati.