問題を表示するために、以下のコードを作成しました。 はい、私はそれがすべて教義であるべきであり、PDOを使用することによってそれは教義の事柄をまったく無意味にするという事実に感謝します。DoctrineとPDOで同じ結果が得られない
さらに重要なことに、私は2つが一致しない理由を理解しようとしています。
基本的に、最初のPDOクエリには、70行カウントと140最大IDが返されます。 2番目のPDOクエリは、同じ70行カウントと140最大IDを返します。 問題は、2つの間の教義の挿入が71と141になったということです。
なぜ、2番目のPDOクエリノートにこれが反映されていますか?
別のPHPページまたはWorkbenchでクエリを実行すると、71/141を返します。実行中のページ内にはありません。
$userID = $enUser->getId();
$stmt1 = $this->pdoConnection->getConnection()->prepare('
SELECT COUNT(UT.ID) AS UTC,
MAX(UT.ID) AS UTMID
FROM UserThing UT
WHERE UT.User_ID = :userID;
') or die (implode(':', $stmt1->errorInfo()));
$stmt1->bindParam(':userID', $userID, \PDO::PARAM_INT, 11);
$results = $this->pdoConnection->dbRecSet($stmt1, false);
$stmt1->closeCursor();
unset($stmt1);
var_dump($results);
$newUserThing = new UserThing();
$newUserThing->setUserThingThings($enThing);
$newUserThing->setUserThingUsers($enUser);
$newUserThing->setAttainedDate(new \DateTime());
$this->em->persist($newUserThing);
$this->em->flush();
$userThingID = $newUserThing->getId();
echo $userThingID;
$stmt2 = $this->pdoConnection->getConnection()->prepare('
SELECT COUNT(UT.ID) AS UTC,
MAX(UT.ID) AS UTMID
FROM UserThing UT
WHERE UT.User_ID = :userID;
') or die (implode(':', $stmt2->errorInfo()));
$stmt2->bindParam(':userID', $userID, \PDO::PARAM_INT, 11);
$results = $this->pdoConnection->dbRecSet($stmt2, false);
$stmt2->closeCursor();
unset($stmt2);
var_dump($results);
Doctrineが新しく挿入されたIDを返すことはできますが、2番目のPDOクエリがDBの変更を反映しない理由はありますか?
私はこれを再現しようとしましたが、できませんでした。あなたは 'WHERE UT.User_ID =:userID;'とは何の関係もないと確信していますか? – mickadoo
私は問題を解決しました。しかし、あなたはあなた自身の質問に答えることができる前に、X時間を待たなければなりません。うまくいけば私が知ったことは他の人を助けるだろう。それを調べてくれてありがとう! – Adi