Doctrine Mapper is package used to map results of native SQL queries made via Doctrine DBAL, into custom DTOs.
run composer require szymonmil/doctrine-mapper
All properties must have same name (or be a camel case version of snake case name) as fields returned from DBAL query!
namespace Some\Namespace;
class Person
{
public int $id;
public string $name;
public bool $isMarried;
public ?int $age = null;
}
$sql = <<<SQL
SELECT
person.id AS id,
person.name AS name,
person.is_married AS isMarried,
person.age AS age
FROM person
SQL;
$result = $connection->executeQuery($sql);
$doctrineMapper = new \DoctrineMapper\src\Service\DoctrineObjectMapper() // You can also inject this service in Symfony DI
$firstPerson = $doctrineMapper->fetchObject($result, Some\Namespace\Person::class);