Im Titel ist eigentlich schon alles gesagt. Ich würde vorschlagen, dass man im SW Core der Methode addAssociation
optional einen Criteria Parameter übergibt. Hier ein Beispiel:
/** Beispiel 1: Ist-Zustand
* Assoziation `categories` kann nicht = null sein
* Der Filter der Ergebnisse der Assoziation wird nicht beachtet
*/
$criteria = new Criteria();
$criteria->setLimit(3);
$criteria->addAssociation('categories');
$criteria->addFilter(new EqualsAnyFilter('categoryId', $categoryIds));
$criteria->addFilter(new EqualsFilter('categories.parentId', null));
$criteria->addFilter(new EqualsFilter('categories.level', 1));
/** Beispiel 2: Soll-Zustand
* Assoziation `categories` kann = null sein
* Der Filter der Ergebnisse der Assoziation wird beachtet
*/
$categoriesCriteria = new Criteria();
$categoriesCriteria->addFilter(new EqualsFilter('parentId', null));
$categoriesCriteria->addFilter(new EqualsFilter('level', 1));
$categoriesCriteria->addSorting(new FieldSorting('name'));
$criteria = new Criteria();
$criteria->setLimit(3);
$criteria->addAssociation('categories', $categoriesCriteria); // Übergabe einer zusätzlichen Criteria theoretisch möglich?
$criteria->addFilter(new EqualsAnyFilter('categoryId', $categoryIds));