El problema con su resultado deseado es que Cake no le devolverá una matriz de resultados eliminada si usa condiciones en sus modelos relacionados.
Esto sucede porque Cake solo usará estas condiciones en su modelo relacionado y le devolverá los resultados con condiciones verdaderas en sus modelos relacionados.
Si desea recuperar productos con solo una categoría específica, debe consultar a través del modelo de categoría, ya que esto le brinda la posibilidad de utilizar las condiciones en sus productos. Esto podría verse así:
$this->Category->find('all', array('conditions' => array('Category.id' => 2));
Esto le devolverá solo la categoría deseada y sus productos asociados. Sin embargo, esto no es muy satisfactorio si desea una lista, ya que tendría que realizar la conversión manualmente.
Prefiero echar un vistazo al complemento enlazable lo que debería brindarle exactamente la funcionalidad deseada, ya que extiende Cake al usar uniones como lo hizo en su consulta. Esto hace posible obtener resultados con condiciones en sus modelos relacionados.