我有一个实体(B)负责管理自定义模板。在更新实体A时,我需要查询实体B以获取所需的模板并进行必要的处理。
类似的东西:
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\EntityRepository;
use Bundle\EmailsBundle\Entity\Email;
use Symfony\Component\Validator\ExecutionContextInterface;
class MemberApplication extends EntityRepository
{
public function sendUpdateNotificationEmails()
{
// Send email to user
$emailRow = $this->getEntityManager()
->createQuery("SELECT * FROM emails where `type` = 'x' LIMIT 1")
->getResult();
}
(...)
}
这会给我一个错误:
Fatal error: Call to a member function createQuery() on a non-object in Classpath/Classname.php
$ this-> getEntityManager()和$ this-> _em都是NULL。
我在http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes中阅读了类似的方法,而且我无法弄清楚为什么这不起作用。
由于
答案 0 :(得分:1)
this-> getEntityManager()返回null,因为没有注入对doctrine的依赖。试试$ this-> getDoctrine() - > getEntityManager();代替。这应该在控制器端完成,但是这样的事情:
$em = $this->getDoctrine()->getManager();
$memberRepo = $em->getRepository('MyBundle:MemberApplication');
$result = $memberRepo->sendUpdateNotificationEmails();
然后在你的函数中你应该返回$ emailRow或你想要的东西。