Verschachtelung von Filtern auf Assoziationen nicht möglich?

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));

Falls das Thema für jemand anderes relevant sein sollte:

Prinzipiell sollte es möglich sein Filter für Associations folgendermaßen zu erstellen:

$criteria = new Criteria();
$criteria->addAssociation('categories');
$criteria->getAssociation('categories')->addFilter(new EqualsFilter('parentId', null));
1 „Gefällt mir“