Php 多对一原则关系中的未定义索引异常
我有一个工人实体Php 多对一原则关系中的未定义索引异常,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个工人实体 /** * Worker * * @ORM\Table(name="worker") * @ORM\Entity */ class Worker { /** * @var integer * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY")
/**
* Worker
*
* @ORM\Table(name="worker")
* @ORM\Entity
*/
class Worker
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
}
以及这样的发票实体:
/**
* Invoice
*
* @ORM\Table(name="Invoice")
*/
class Invoice
{
/**
* @ORM\ManyToOne(targetEntity="Worker")
* @ORM\JoinColumn(name="fkWorker", referencedColumnName="id")
**/
private $worker;
}
Notice: Undefined index: Invoice
500 Internal Server Error - ContextErrorException
所以在我的控制器里
$em = $this->getDoctrine()->getManager();
$invoice = $em->getRepository('SkaLab\Bundle\FrontEndBundle\Entity\Invoice')->find(8);
但我不明白最后一行返回的异常如下:
/**
* Invoice
*
* @ORM\Table(name="Invoice")
*/
class Invoice
{
/**
* @ORM\ManyToOne(targetEntity="Worker")
* @ORM\JoinColumn(name="fkWorker", referencedColumnName="id")
**/
private $worker;
}
Notice: Undefined index: Invoice
500 Internal Server Error - ContextErrorException
我该如何计算呢?虽然它不能解决您的问题,但为了更好地实践,我会更改您的
Worker
类,使其使用大写字母定义,即@ORM\Table(name=“Worker”)
,以确保一致性。发票实体没有标识符。
你只是没有复制/粘贴它吗
然后,尝试调用您的实体,如:
getRepository('SkalableFrontEndBundle:Invoice')
它可以是一个输入错误,而不是完整的名称空间
如果问题仍然存在,请共享问题中错误的完整日志。谢谢,Dom,我试图改变这一点,但没有解决我的问题听到这个消息很抱歉!你能多发一点你的代码吗?错了。这只是表名,可以是小写,我已经相应地修改了答案。没有必要通过使属性
受保护来破坏类的设计。条令在private
properties中非常有效。谢谢xabbuh和chalasr。我尝试缓存getRepository参数,但不起作用。您的发票实体中有$id吗?这在你的问题中是看不见的