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();
}