我在symfony2中发现了一个奇怪的问题(也许不是奇怪,我在某个地方犯了错误):
-
我试图调用我在实体类中定义的实体管理器方法:
//Entity/organisation.php /** * @return string */ public function getApiUrl(){ return $this->api_url; }
和i并不总是得到相同对象的返回值
-
从控制器方法发出的调用:
private function addApiLog($organisationId, $callType, $eventInfo){ $em = $this->getEntityManager(); $organisation = $em->find(''WebAgenda'Entity'Organisation', $organisationId); if (null === $organisation) { die(); } $apiUrl = $organisation->getApiUrl(); $apiKey = $organisation->getApiKey(); $fc = fopen("debug_api_log.txt", "a"); fwrite($fc, date("Y-m-d H:i:s")." - ".$callType." - ".$organisationId." - ".$organisation->getName()." - ".$apiUrl."'n"); fclose($fc); if(trim($apiUrl)!='' && $apiUrl!='-'){
-
'addApiLog()'方法是从不同的方法调用取决于动作,即使传递给它的组织id是相同的,我得到组织对象,有时$organisation->getApiUrl()方法不返回任何东西和$organisation->getName(),总是返回正确的值:http://screencast.com/t/HQ2NuNfWSG9
我错过了什么?为什么我没有得到值?
谢谢!
替换$em = $this->getEntityManager();
与此$em = $this->getDoctrine()->getManager();
然后使用你的仓库
$myRepo = $em->getRepository('NamespaceMyBundle:Organisation');
$organisation = $myRepo->find($organisationId);
你说addApiLog()
方法是根据不同的动作从不同的方法调用的
也许不是所有的方法都可以访问Context
?