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吗?这在你的问题中是看不见的