[主键缺失值]

时间:2019-06-26 10:25:47

标签: symfony doctrine

我有两个具有多对多关系的实体: Egwprestation <-EgwAddressbook

当我操纵实体(存储库)时,我收到此消息:

未捕获的PHP异常Doctrine \ Common \ Proxy \ Exception \ OutOfBoundsException:“ / htdocs / vendor / doctrine / common / lib / Doctrine / Common上“ Lea \ PrestaBundle \ Entity \ EgwAddressbook上主键地址簿ID的缺失值” /Proxy/Exception/OutOfBoundsException.php 40行

这是我的egwAddressbook实体:


<?php

namespace Lea\PrestaBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;

use Doctrine\ORM\Mapping as ORM;

/**
 * Lea\PrestaBundle\Entity\EgwAddressbook
 *
 * @ORM\Table(name="egw_addressbook")
 * @ORM\Entity(repositoryClass="Lea\PrestaBundle\Entity\EgwAddressbookRepository")
 */
class EgwAddressbook
{
    /**
     * @var integer $addressbookId
     *
     * @ORM\Column(name="addressbook_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $addressbookId;

    /**
     * @var string $contactId
     *
     * @ORM\Column(name="contact_id", type="integer", nullable=true)
     */
    private $contactId;

这是我的EgwPrestation实体:

/**
 * @ORM\ManyToOne(targetEntity="EgwAddressbook", inversedBy="prestationsP")
 * @ORM\JoinColumn(name="id_contact_prescripteur", referencedColumnName="contact_id")
 */
    private $contactPr;

所以,这是2个实体之间的简单ManytoOne关系。

搜索了很多天...

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的映射不正确,您不能引用EgwAddressbook的contact_id,因为它不是主键。我不太确定您在映射方面需要什么,但是如果您想要许多EgwPrestations拥有一本EgwAddressbook ,请尝试以下方法:

/**
 * @ManyToOne(targetEntity="EgwAddressbook")
 * @JoinColumn(name="id_contact_prescripteur", referencedColumnName="addressbook_id")
 */
private $contactPr`

Doctrine documentation非常有用,可以帮助您确定哪种映射适合您的需求。