データベースの統計情報に複数のマシンが接続されており、それぞれの最新の統計情報のみを取得する必要があります。Doctrine Symfony - Raw SQLとのエンティティマッピングを使用
私は、次のリクエストで教義のエンティティマネージャを使用:ただし、この要求が非常に遅い(= 22sec程度。)ので、私は生の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();
:
$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で同様の要求を実行する方法はありますか?
ありがとうございます。