Oracleデータベースに接続しているSymfonyのDoctrineでクエリビルダーを使用してクエリを実行します。私は、コントローラでこのコードを使用して、現在あるすべての予約の結果を取得しようとしていた。質問ビルダーを使用したSymfonyでのクエリの結果の数が正しくありません
$bookRepo = $this->getDoctrine()
->getRepository('AppBundle:VScheduledRoomActivity');
$now = new \DateTime();
$curBookDataQuery = $bookRepo->createQueryBuilder("c");
$curBookDataQuery
->where('c.startStamp < :now')
->andWhere('c.endStamp > :now')
->setParameter('now', $now)
;
$curBookData = $curBookDataQuery->getQuery()->getResult();
これは5されている必要があり、現在のすべての予約を、返す必要があります(私は、Oracle SQL Developerで効果的に同じクエリを実行しました)が1つしか戻ってこなかった。私はその質問に悩まされ、いつもよりも結果が少なくなっています。
だから私は、findAllとそれを比較するビルダーを何も比較していないと思いました。だから私はこのように見えるようにコードを変更:
$bookRepo = $this->getDoctrine()
->getRepository('AppBundle:VScheduledRoomActivity');
$curBookDataQuery = $bookRepo->createQueryBuilder("c");
$curBookData = $curBookDataQuery->getQuery()->getResult();
$curBookData2 = $bookRepo->findAll();
私が返されたかどうか確認するためにダンプを()を使用するときに、$ curBookDataおよび$ currBookData2のための915のための15件の結果がありました。これらはまったく同じ結果になるはずです。
誰にもこの問題があったのですか、それを解決する方法がありますか?
UPDATE: 私はいくつかのより多くの情報を発見した、と私はそのIDで行うことを考えています。 Missing rows when querying table with Doctrine (Symfony2)で、それは主キーの問題であることがわかりました。それを調べると、Doctrineは主キー(データベースを最初に実行しています)をoccurrence_noという名前のフィールドに設定しました。これは、リピート予約(その整数)を追跡するために使用されるキーではなく、主キーはactivity_idです。だから私は
@ORM\Id
をプライマリキーとして使用しました。これは9つの結果に変更されました。私はそれが文字列の種類を持っていたことを見たので、私は行を編集した:
@var guid
@ORM\Column(name="ACTIVITY_ID", type="guid", nullable=false)
に
@var string
@ORM\Column(name="ACTIVITY_ID", type="string", nullable=true)
と今では67件の結果を示している
@ORM\GeneratedValue(strategy="UUID")
を追加しました!私は、これらの詳細を編集すると、結果の数が変更されたときに主キーがGUIDであることと関係があると思います。
別のノート:これは図であり、私はそれが読み取り専用であることを確認するために
@ORM\Entity(readOnly=true)
を使用していました。
デバッグツールバー/プロファイラで実行されたクエリを見て、データベース内で直接実行しようとします。 – Gerry
$ nowのあなたの価値は何ですか、例えば分だけ正確であれば、それ以上ではなく、それ以上ではないが、 – Rooneyl
と等しいレコードの負荷がかかる可能性があります。Gerry:私は - > getSQL SQL文をOracle SQL Developerに取り込んで実行し、915を取得する必要があります。したがって、文は正しいです。 Rooneyl:$ nowの値は問題なく、ダンプされてSQL開発者にコピーされ、それが正しいことを確認し、正しい応答を得ました。私は何か他のものを見つけ、新しい情報で質問に更新を加えます。 – MicWit