حقيقة رائعة حقًا اكتشفتها للتو أثناء العبث بتطبيق WebSocket الذي أقوم به حاليًا باستخدام Symfony 4.1 و https://github.com/GeniusesOfSymfony/WebSocketBundle (الذي يعتمد على PHP Ratchet).
كنت أرغب في جلب أحدث البيانات بشكل دوري من قاعدة بيانات MySQL لغرض الاختبار باستخدام $repository->find(2);
لكنها دائمًا ما أعادت نفس النتيجة على الرغم من أنني كنت أغير البيانات أثناء الاشتراك في قناة WebSocket.
بعد ساعات طويلة من العبث بالشفرة والبكاء ، اكتشفت أن العقيدة لسبب ما هي نتائج التخزين المؤقت (أو هذا ما أعتقد أنه يفعله).
لاختبار نظريتي ، أنشأت خدمة تتعامل مع الجلب من قاعدة البيانات باستخدام الرمز التالي:
/**
* @return mixed
* @throws \Doctrine\DBAL\DBALException
*/
public function fetchNewest()
{
$stmt = $this->em->getConnection()->prepare('SELECT * FROM test WHERE id=2');
$stmt->execute();
return $stmt->fetch();
}
ولسبب ما ، نجح ذلك. يمكن لأي شخص أن يشرح لماذا find(2)
لم ينتج عن الطريقة أحدث البيانات بينما فعلت SQL الخام؟