2011-12-12 115 views
1

当我使用findBy函数而不是在smyfony服务容器中查找时,它会导致错误。Symfony2 Doctrine findBy会导致致命错误

$site = $this->em->getRepository('...')->find($id); 
$site->getTitle(); 

工作正常。如果我使用findBy

$site = $this->em->getRepository('...')->findByTitle($id); 
$site->getTitle(); 

我得到一个错误 “致命错误:调用成员函数的getTitle();”。

我必须改变什么?

+0

您是否将实体注释中的@ID设置为标题字段?通过实体ID查找搜索。我从来没有见过它没有定义的情况,但我想它会返回NULL,这就解释了你的错误 – ZolaKt

+0

它做了var_dump($ site);它返回对象(... \ Entity \ Site) – user1075510

+0

有趣....检查生成的DQL – ZolaKt

回答

0

不,注释不正确。

您必须使用@Id标识符才能使查找功能正常工作。另外,我强烈建议你在任何地方定义id,因为如果没有它,连接将无法正常工作(除非你的意思是手动编写每个连接条件)。

是的,如果你只想要一个实体,findOneBy就是要走的路。另请注意,find只是findOneById的快捷方式,其中Id是您使用@Id注释引用的列。

查看docs

另外,我会建议你编辑的问题和标签,如果别人绊倒在这。这与Symfony无关,它严格与学说相关。