【问题标题】:Symfony2: Call to a member function getId() on a non-object even though there is an object?Symfony2:即使有对象,也要在非对象上调用成员函数 getId()?
【发布时间】:2012-07-13 08:18:12
【问题描述】:

我不断收到此错误:

    /* ... */
    $em = $this->getDoctrine()->getEntityManager();
    $movie = $em->getRepository('MyMyBundle:Movie')->findMovieByName('moviename'); // Repository Class
    \Doctrine\Common\Util\Debug::dump($movie); // dumps the object just fine! The Repository found it
    echo $movie->getId(); // brings me the error nevertheless

致命错误:在...中的非对象上调用成员函数getId()在线...

我的实体中有 getId() 方法。即使它和对象,其他方法也不起作用!

对象被转储如下:

..... array(1) { [0]=> object(stdClass)#759 (59) { ["__CLASS__"]=> string( .....

有什么提示吗?

【问题讨论】:

  • 您使用的是自定义实体存储库吗?如果是,请发布findMovieByName 方法。
  • 谢谢吉尔登。是的,它是一个自定义实体存储库。但我找到了答案(现在花了我大约一个小时)。 :) 谢谢!

标签: symfony doctrine


【解决方案1】:

没关系,我找到了答案:echo $movie[0]->getId();(存储库返回了一个对象数组)。抱歉,有时您只见树木不见森林。

【讨论】:

  • 为了稍微简化您的代码,您应该在您的存储库中使用 Query::getSingleResult 或 Query::getOneOrNullResult 方法。它们每个都返回一个结果,如果有多个结果可用,则抛出异常。此外,如果没有可用的结果,getSingleResult 会引发异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多