LdapTools\Query\LdapQuery::getResultsForAliases PHP Method

getResultsForAliases() protected method

Goes through each alias for the operation to get results only for that specific type, then combine and return them all.
protected getResultsForAliases ( string $hydratorType ) : array | LdapObjectCollection | mixed
$hydratorType string
return array | LdapTools\Object\LdapObjectCollection | mixed
    protected function getResultsForAliases($hydratorType)
    {
        /** @var LdapObjectCollection|array $results */
        $results = [];
        foreach ($this->operation->getFilter()->getAliases() as $alias => $schema) {
            $operation = clone $this->operation;
            /**
             * If we received the partial limit of results, re-adjust the next operations limit so we don't go over.
             * 
             * @todo This is getting difficult due to multiple operations needed to select all schema types. If this was
             *       a single operation the issue would not exist. But with a single query and multiple types I cannot
             *       easily determine which result is what type. Unsure of the best way to fix this at the moment. 
             */
            if ($operation->getSizeLimit() && count($results) < $operation->getSizeLimit()) {
                $operation->setSizeLimit($operation->getSizeLimit() - count($results));
            }
            $objects = $this->getResultsFromLdap($operation, $hydratorType, $schema, $alias);
            if ($objects instanceof LdapObjectCollection && $results) {
                $results->add(...$objects->toArray());
            } elseif ($objects instanceof LdapObjectCollection) {
                $results = $objects;
            } else {
                $results = array_merge($results, $objects);
            }
            // If the results have reached the expected size limit then end the loop.
            if ($this->operation->getSizeLimit() && count($results) == $operation->getSizeLimit()) {
                break;
            }
        }
        return $results;
    }