Das Problem mit Ihrem gewünschten Ergebnis ist, dass Cake Ihnen kein bereinigtes Ergebnisarray zurückgibt, wenn Sie Bedingungen für Ihre verwandten Modelle verwenden.
Dies geschieht, weil Cake diese Bedingungen nur für Ihr verwandtes Modell verwendet und Ihnen die Ergebnisse mit Bedingungen zurückgibt, die für Ihre verwandten Modelle wahr sind.
Wenn Sie Produkte mit nur einer bestimmten Kategorie zurückerhalten möchten, müssen Sie das Kategorie-Modell abfragen, da dies Ihnen die Möglichkeit gibt, die Bedingungen für Ihre Produkte zu verwenden. Das könnte etwa so aussehen:
$this->Category->find('all', array('conditions' => array('Category.id' => 2));
Dadurch erhalten Sie nur die gewünschte Kategorie und die zugehörigen Produkte zurück. Dies ist jedoch nicht sehr zufriedenstellend, wenn Sie eine Liste wünschen, da Sie die Konvertierung manuell durchführen müssten.
Ich schaue mir lieber das Linkable Plugin an was Ihnen genau die gewünschte Funktionalität bieten sollte, da es Cake um die Verwendung von Joins erweitert, wie Sie es in Ihrer Abfrage getan haben. Dadurch ist es möglich, Ergebnisse mit Bedingungen für Ihre verwandten Modelle zu erhalten.