In der Praxis kommt es häufig vor, dass man lediglich eine Auswahl von Datensätzen in TYPO3 benötigt und hierfür nur eine durch Kommata getrennte Liste von UIDs zur Verfügung hat. Leider bietet Extbase keine standardmäßige Funktion für diesen Zweck.

Für die Repository

Hier der Quelltext für "findByUids" - der Parameter $uids ist ein Array mit den UIDs der ausgewählten Datensätze:

 

    /**
     * Find by multiple uids
     * 
     * @param array uids
     */
    public function findByUids($uids) {
        
        $query = $this->createQuery();
        $constraints = [];
        foreach ($uids as $uid) {
            $constraints[] = $query->equals('uid', $uid);
        }
        $orConstraint = $query->logicalOr(...$constraints);
        $query->matching(
            $query->logicalAnd(
                $orConstraint,
                $query->equals('hidden', 0),
                $query->equals('deleted', 0)
            )
        );
        return $query->execute();
    }

 

 

Und so wird die Methode aufgerufen:

 

$uidList = GeneralUtility::intExplode(',', $this->settings['selectedUids'], true);
$selectedContacts = $this->contactRepository->findByUids($uidList);

 

 

Previous PostTYPO3 Tutorial: Default Ratios für Image Manipulation einstellen
Next PostJS Tutorial: Elemente mit dynamischer höhe prozentual verschieben