Symfony2实体管理器不能一直工作


Symfony2 entity manager get not working all the time

我在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 ?