多对一学说关系中未定义的索引异常

时间:2016-01-10 17:56:21

标签: 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")
     */
     private $id;
}

和这样的发票实体:

/**
 * Invoice
 *
 * @ORM\Table(name="Invoice")
 */
class Invoice
{
    /**
     * @ORM\ManyToOne(targetEntity="Worker")
     * @ORM\JoinColumn(name="fkWorker", referencedColumnName="id")
     **/
     private $worker;
}

所以在我的控制器中

$em = $this->getDoctrine()->getManager();
$invoice = $em->getRepository('SkaLab\Bundle\FrontEndBundle\Entity\Invoice')->find(8);

但我不明白这最后一行会返回如下的异常:

Notice: Undefined index: Invoice
500 Internal Server Error - ContextErrorException

我怎么知道?

2 个答案:

答案 0 :(得分:0)

虽然它无法解决您的问题,但为了良好的做法,我会更改您的Worker课程,以便用大写字母定义,即@ORM\Table(name="Worker")确保一致性。

答案 1 :(得分:0)

Invoice实体没有标识符。 你没有复制/粘贴它吗?

然后,尝试将您的实体称为:

   getRepository('SkalableFrontEndBundle:Invoice')

而不是完整的命名空间,它可能是一个错字。

如果它仍然存在,请在您的问题中分享错误的完整日志。