我目前正在使用Symfony2,我收到此错误消息:
未定义的方法'getDoctrine'.方法名称必须以findBy或findOneBy开头!500内部服务器错误 - BadMethodCallException
这是我的实体类:
<?php
namespace Gestionresiduos\ResiduoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="ResiduoRepository")
*/
class BodegaContieneResiduo
{
/**
* @ORM\Id
* @ORM\column(type="integer")
* @ORM\GeneratedValue
*/
protected $idContiene;
.....
}
Run Code Online (Sandbox Code Playgroud)
这是Controller的页面Action方法:
<?php
namespace Gestionresiduos\ResiduoBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function portadaAction()
{
$em = $this->getDoctrine()->getEntityManager();
$ofertas= $em->getRepository('ResiduoBundle:BodegaContieneResiduo')->findResiduosAlmacenados();
return $this->render('ResiduoBundle:Default:index.html.twig');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的EntityRepository:
<?php
namespace Gestionresiduos\ResiduoBundle\Entity;
use Doctrine\ORM\EntityRepository;
class ResiduoRepository extends EntityRepository
{
public function findResiduosAlmacenados()
{
$em = $this->getDoctrine()->getEntityManager();
$consulta = $em->createQuery('SELECT r FROM ResiduoBundle:BodegaContieneResiduo');
return $consulta->getOneOrNullResult();
}
}
Run Code Online (Sandbox Code Playgroud)
那么,问题在哪里?
Dri*_*512 13
在Repository类中,而不是:
$em = $this->getDoctrine()->getEntityManager();
Run Code Online (Sandbox Code Playgroud)
你应该使用:
$em = $this->getEntityManager();
Run Code Online (Sandbox Code Playgroud)
参考:
http://www.doctrine-project.org/api/orm/2.2/class-Doctrine.ORM.EntityRepository.html
| 归档时间: |
|
| 查看次数: |
6108 次 |
| 最近记录: |