How to return Select query into object instead of array

Hello,
I have a select query with many joined table. I would like to return it into select object and to access in my view.
I have already use Hydrator but I think it work “only” if my query is on an unique entity/table.
How can I do that ?
Here is my query

<?php
                                
    /**
    * @module     Commun
    * @subpackage Model/Repository
    * @author     Allround automation by Repository Creator
    * @created on 05-05-2021 17:05:48
    * @copyright  Copyright (c) 2020 Nslabs by Samuel NANGUI <nanguisamuel@gmail.com>
    */                
                

namespace Commun\Model\Repository;
                
use Commun\Model\AbstractTable;
use Commun\Model\Entity\BroadcastRdv;
use Commun\Model\Interfaces\BroadcastRdvInterface;

use Laminas\Hydrator\HydratorInterface;
use Laminas\Db\Adapter\AdapterInterface;

use Laminas\Db\Sql\Sql;                
use Laminas\Db\Sql\Join;
  
class BroadcastRdvRepository extends AbstractTable implements BroadcastRdvInterface
{    

    /**
     *@var BroadcastRdvInterface
     */
    protected $tablename="BroadcastRdv";    
    
    public function __construct(AdapterInterface $db,HydratorInterface $hydrator, BroadcastRdv $broadcastrdv){
        parent::__construct($db,$hydrator,$broadcastrdv,$this->tablename);                       
    }

public function getDemandeRdvByDetailId($idDetailBroadcast,$lang='Fr'){
        
        $lang= ucfirst($lang);
        $sql    = new Sql($this->db);
        $select = $sql->select();        
        $select->from(["db" => "detailBroadcast"])
               ->join(["brdv" => "broadcastRdv"],"brdv.idbroadcastRdv=db.idbroadcastRdv",[], Join::JOIN_INNER) 
               ->join(["ru" => "refUtilisateur"],"brdv.idRefUtilisateur=ru.idRefUtilisateur",[], Join::JOIN_INNER)                
               ->join(["rup" => "refUtilisateur"],"rup.idRefUtilisateur=db.idRefUtilisateurPro",[], Join::JOIN_INNER)                
               ->join(["rs" => "refSpecialite"],"rs.idRefSpecialite=db.idSpecialiteProfessionel",[], Join::JOIN_INNER) 
               ->join(["rsd" => "refStatutDetail"],"rsd.idRefStatutDetail=db.idRefStatutDetail",[], Join::JOIN_INNER)
               ->where(['db.idbroadcastRdv' => $idDetailBroadcast])
               ->columns([
                        'nomClient'             => 'ru.nom', 
                        'prenomsClient'         => 'ru.prenoms',                        
                        'statutDemande'         => 'rsd.libelle'.$lang,                        
                        'dateSaisie'            => 'db.dateSaisie',                        
                        'idAction'              => 'db.idDetailBroadcast', 
                        'observationDemande'    => 'brdv.observationDemande',
                        'dateSaisieDemande'     => 'brdv.dateSaisie',
                        'nomPro'                => 'rup.nom', 
                        'prenomPro'             => 'rup.prenoms', 
                        ],
                       FALSE
                       );
        
        $statement = $sql->prepareStatementForSqlObject($select);
        $result    = $statement->execute();

}

The hydrator does not know where the data comes from, because during hydrating only an array with data is passed, nothing more.

And how does the hydrator look like? Can dateSaisie or idAction be set for the object?

I would like to know if there is another way to fetch my datas without using hydrator?

You already have a result:

$result = $statement->execute();

It is an iterator: Introduction - laminas-db - Laminas Docs

But more useful is a result set, like Laminas\Db\ResultSet\ResultSet: Result Sets - laminas-db - Laminas Docs

Thank you @froschdesign. I will try and keep you posted

Thanks for your reply @froschdesign.
Everything is OK

Which solution do you use now?