EntityManager getRepository,方法find(id)返回控制器

时间:2014-01-17 21:37:12

标签: php symfony doctrine entitymanager

我的问题是,当我尝试使用$em->find方法查找数据库记录时,它会返回一个Controller。

让我举一个例子:

Neostat\DiagnosticoBundle\Controller\ComponentController.php

$em = $this->getDoctrine()->getEntityManager();
$diagnostico = $em->getRepository('NeostatDiagnosticoBundle:Diagnostico')->find($id);
var_dump(get_class($diagnostico));

返回Neostat\DiagnosticoBundle\Controller\ComponentController

但我在Diagnostico.php中有一个名为src/Neostat/DiagnosticoBundle/Entity/Diagnostico.php的实体:

namespace Neostat\DiagnosticoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Neostat\PacienteBundle\Entity\Paciente;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * Diagnostico
 *
 * @ORM\Table(name="diagnostico")
 * @ORM\Entity(repositoryClass="Neostat\DiagnosticoBundle\Entity\DiagnosticoRepository")
 * @UniqueEntity(fields={"nombre"}, message="Ya existe un diagnostico con ese nombre.")
 */
class Diagnostico
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
private $id;

// etc...
}

我做错了什么?

2 个答案:

答案 0 :(得分:5)

它没有返回控制器(它不可能),你认为它的作用是函数get_class()的行为。

引用PHP documentation of the function get_class():"如果在课堂内省略object,则返回该课程的名称。"。

基本上,在您的情况下,find方法返回一个空值,因此找不到实体。

当函数get_class()返回当前类时,您应该尝试function gettype();此函数将指示返回的值是字符串,对象,NULL还是任何其他类型。

答案 1 :(得分:0)

查找doctrine数据库记录,请使用findOneById或者像findOneByUser等。

如果你想使用像findByType这样的findByField找到一个列表。

这些是默认的学说。