render(); return ( $adapter ?: static::$defaultAdapter )->pdo->select($sql, $queryBuilder->parameters ?? [])->fetchAll(); } public static function iterateQueryBuilder(QueryBuilder $queryBuilder, ?ConnectionAdapter $adapter = null) : Generator { $sql = $queryBuilder->render(); $statement = ( $adapter ?: static::$defaultAdapter )->pdo->select($sql, $queryBuilder->parameters ?? []); while ( $row = $statement->fetch() ) { yield $row; } $statement->closeCursor(); return [ 'count' => $statement->rowCount(), ]; } public static function resolveEntity(string $entityClass) : Common\EntityResolver { return static::$resolved[$entityClass] ?? static::$resolved[$entityClass] = new Common\EntityResolver($entityClass); } public static function repository(...$arguments) : Repository { return new static::$repositoryClass(...$arguments); } public static function queryBuilder(...$arguments) : QueryBuilder { return new static::$queryBuilderClass(...$arguments); } }