我有两个具有多对多关系的实体: 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关系。
搜索了很多天...
感谢您的帮助
答案 0 :(得分:0)
您的映射不正确,您不能引用EgwAddressbook的contact_id
,因为它不是主键。我不太确定您在映射方面需要什么,但是如果您想要许多EgwPrestations拥有一本EgwAddressbook ,请尝试以下方法:
/**
* @ManyToOne(targetEntity="EgwAddressbook")
* @JoinColumn(name="id_contact_prescripteur", referencedColumnName="addressbook_id")
*/
private $contactPr`
Doctrine documentation非常有用,可以帮助您确定哪种映射适合您的需求。