0
我有多臺機器連接到我的數據庫中的一堆統計信息,我只需要檢索每個機器的最新統計信息。Doctrine Symfony - 使用原始SQL的實體映射
我使用的學說實體管理器與以下請求:
$str = "SELECT s, sa.slug ";
$str .= "FROM AppBundle:Statistique s ";
$str .= "LEFT JOIN AppBundle:StatistiqueAnomalie sa WITH (s.anomalie = sa.num) ";
$str .= "LEFT JOIN AppBundle:Statistique sp WITH (s.numserieMachine = sp.numserieMachine AND s.datecrea < sp.datecrea) ";
$query = $this->getEntityManager()->createQuery($str);
//var_dump($query->getSql());
return $query->getResult();
然而,這要求非常慢(。= 22SEC約)所以想在原始SQL更優化的一個來代替它:
$str = "SELECT * FROM
(SELECT numserie_machine, MAX(datecrea) as ma FROM statistique GROUP BY numserie_machine) as maxv
INNER JOIN statistique s on maxv.numserie_machine=s.numserie_machine and maxv.ma=s.datecrea
LEFT JOIN statistique_anomalie sa on s.anomalie=sa.num";
$conn = $this->getEntityManager()->getConnection();
$query = $conn->prepare($str);
$query->execute([]);
return $query->fetchAll();
這個請求運行良好,速度不錯,但我不能使用這些數據。事實上,我的樹枝文件使用教義實體而不是關聯數組。
有沒有辦法將我的結果映射到實體?或者至少,有沒有辦法用DQL執行類似的請求?
謝謝。