> */ private array $parameterMappings = []; /** * Initializes a new instance of the ParserResult class. * The new instance is initialized with an empty ResultSetMapping. */ public function __construct() { $this->resultSetMapping = new ResultSetMapping(); } /** * Gets the ResultSetMapping for the parsed query. * * @return ResultSetMapping The result set mapping of the parsed query */ public function getResultSetMapping(): ResultSetMapping { return $this->resultSetMapping; } /** * Sets the ResultSetMapping of the parsed query. */ public function setResultSetMapping(ResultSetMapping $rsm): void { $this->resultSetMapping = $rsm; } /** * Sets the SQL executor that should be used for this ParserResult. */ public function setSqlExecutor(AbstractSqlExecutor $executor): void { $this->sqlExecutor = $executor; } /** * Gets the SQL executor used by this ParserResult. */ public function getSqlExecutor(): AbstractSqlExecutor { if ($this->sqlExecutor === null) { throw new LogicException(sprintf( 'Executor not set yet. Call %s::setSqlExecutor() first.', self::class, )); } return $this->sqlExecutor; } /** * Adds a DQL to SQL parameter mapping. One DQL parameter name/position can map to * several SQL parameter positions. */ public function addParameterMapping(string|int $dqlPosition, int $sqlPosition): void { $this->parameterMappings[$dqlPosition][] = $sqlPosition; } /** * Gets all DQL to SQL parameter mappings. * * @psalm-return array> The parameter mappings. */ public function getParameterMappings(): array { return $this->parameterMappings; } /** * Gets the SQL parameter positions for a DQL parameter name/position. * * @param string|int $dqlPosition The name or position of the DQL parameter. * * @return int[] The positions of the corresponding SQL parameters. * @psalm-return list */ public function getSqlParameterPositions(string|int $dqlPosition): array { return $this->parameterMappings[$dqlPosition]; } }