Php EntityManager getRepository,方法find(id)返回控制器
我的问题是,当我尝试使用Php EntityManager getRepository,方法find(id)返回控制器,php,symfony,doctrine,entitymanager,Php,Symfony,Doctrine,Entitymanager,我的问题是,当我尝试使用$em->find方法查找数据库记录时,它会返回一个控制器 让我举一个例子: Neostat\DiagnosticoBundle\Controller\ComponentController.php: $em = $this->getDoctrine()->getEntityManager(); $diagnostico = $em->getRepository('NeostatDiagnosticoBundle:Diagnostico')->fi
$em->find
方法查找数据库记录时,它会返回一个控制器
让我举一个例子:
Neostat\DiagnosticoBundle\Controller\ComponentController.php
:
$em = $this->getDoctrine()->getEntityManager();
$diagnostico = $em->getRepository('NeostatDiagnosticoBundle:Diagnostico')->find($id);
var_dump(get_class($diagnostico));
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...
}
它返回Neostat\DiagnosticoBundle\Controller\ComponentController
但是我在src/Neostat/diagnosticbundle/entity/Diagnostico.php
中有一个名为Diagnostico.php的实体:
$em = $this->getDoctrine()->getEntityManager();
$diagnostico = $em->getRepository('NeostatDiagnosticoBundle:Diagnostico')->find($id);
var_dump(get_class($diagnostico));
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...
}
我做错了什么?它不返回控制器(这是不可能的),您认为它返回的原因是函数的行为
引用:“如果在类中省略了对象
,则返回该类的名称。”
基本上,在您的例子中,find
方法返回一个空值,因此找不到实体
当函数get_class()
返回当前类时,您应该尝试;此函数将指示返回的值是字符串、对象、NULL还是任何其他类型。它不返回控制器(这是不可能的),您认为返回的原因是函数的行为get\u class()
引用:“如果在类中省略了对象
,则返回该类的名称。”
基本上,在您的例子中,find
方法返回一个空值,因此找不到实体
当函数get_class()
返回当前类时,您应该尝试;此函数将指示返回的值是字符串、对象、空值还是任何其他类型。有关查找原则数据库记录,请使用findOneById或类似findOneByUser等
如果要查找列表,请使用类似findByType的findByField
这些是默认提供的条令。对于查找条令数据库记录,请使用findOneById或类似findOneByUser等
如果要查找列表,请使用类似findByType的findByField
这些是默认设置的原则。您有哪个版本的symfony?对不起,symfony版本2.4.1,我认为原则版本是2.2。如果symfony版本有问题,我可以使用composer进行降级吗?您推荐哪个版本?DiagnosticRepository中有什么?没有,DiagnosticRepository.php为空。你有哪个版本的symfony?对不起,symfony版本2.4.1,我认为条令版本是2.2。如果symfony版本有问题,我可以使用composer进行降级吗?您推荐哪个版本?DiagnosticRepository中有什么?没有,DiagnosticRepository.php为空。考虑更改<代码> $CydioCo=$EM-> GETRealStk(“NealStaseMealthCubOnL:Debug”)->查找($ID);变量转储(获取类($diagnostico))代码>与$diagnostico=$em->getRepository('NeostatDiagnosticoBundle:diagnostico')->查找($id);如果($$诊断){抛出$-> > CalATEnOutFuxDeXCEP();}这是一个很好的建议,也是一个很好的实践,如果我把你的建议包含在我的答案中,你介意吗?考虑改变<代码> $CydioTo=$EM > GETRealStk(“NealStutsCytoCubnLe:Debug To”)->查找($ID);变量转储(获取类($diagnostico))代码>与$diagnostico=$em->getRepository('NeostatDiagnosticoBundle:diagnostico')->查找($id);如果(!$diagnostico){throw$this->createNotFoundException();}
这是一个很好的建议,也是一个很好的实践,你介意我在回答中包含你的建议吗?实际上在原则2中,find和findOneById是相同的。实际上在原则2中,find和findOneById是相同的。