Doctrine orm 升级后与条令的关联错误
我正在努力将一款产品从Symfony 2.7升级到4.2(目前为3.4),并且遇到了一些现有的关联Doctrine orm 升级后与条令的关联错误,doctrine-orm,doctrine,Doctrine Orm,Doctrine,我正在努力将一款产品从Symfony 2.7升级到4.2(目前为3.4),并且遇到了一些现有的关联 字段AppBundle\Entity\User#currentBillingAgreement位于双向关系的拥有方,但目标实体AppBundle\Entity\BillingAgreement#上指定的mappedBy关联不包含所需的“inversedBy”属性 如果关联AppBundle\Entity\User#currentBillingAgreement为一对一,则反向的边AppBundl
- 字段AppBundle\Entity\User#currentBillingAgreement位于双向关系的拥有方,但目标实体AppBundle\Entity\BillingAgreement#上指定的mappedBy关联不包含所需的“inversedBy”属性
- 如果关联AppBundle\Entity\User#currentBillingAgreement为一对一,则反向的边AppBundle\Entity\BillingAgreement#User也必须为一对一
用户
实体具有以下关联:
/**
*@var-BillingAgreement
*@ORM\OneToOne(
*targetEntity=“AppBundle\Entity\BillingAgreement”,
*inversedBy=“用户”,
*级联={“持久化”}
* )
*@ORM\JoinColumn(
*name=“currentBillingAgreementID”,
*referencedColumnName=“billingAgreementID”
* )
*/
受保护的$currentBillingAgreement;
/**
*@var数组集合
*@ORM\OneToMany(
*targetEntity=“AppBundle\Entity\BillingAgreement”,
*mappedBy=“用户”,
*级联={“持久化”}
* )
*@Serializer\Exclude()
*/
受保护的美元账单协议;
而BillingAgreement有以下内容:
/**
* @var User
* @ORM\ManyToOne(
* targetEntity="AppBundle\Entity\User",
* inversedBy="billingAgreements"
* )
* @ORM\JoinColumn(
* name="userID",
* referencedColumnName="userID",
* nullable=false
* )
*/
protected $user;
当我将OneTONE映射添加到BillingAgreement::$user
(@ORM\OneTONE(targetEntity=“AppBundle\Entity\user”,inversedBy=“currentBillingAgreement”)
)时,我得到一个新错误:
- 字段AppBundle\Entity\BillingAgreement#user位于双向关系的拥有方,但目标实体AppBundle\Entity\user#上指定的mappedBy关联不包含所需的“inversedBy”属性
原始的两个错误仍然存在。您可以通过从注释中删除
inversedBy=“user”,
来建立OneTONE关联
或
为BillingAgreement实体上的每个关联使用不同的字段:
/**
* @var User
* @ORM\ManyToOne(
* targetEntity="AppBundle\Entity\User",
* inversedBy="billingAgreements"
* )
* @ORM\JoinColumn(
* name="userID",
* referencedColumnName="userID",
* nullable=false
* )
*/
protected $user;
/**
* @var User
* @ORM\OneToOne(targetEntity="AppBundle\Entity\User", inversedBy="currentBillingAgreement")
*/
protected $singleUser;
在用户实体中:
/**
* @var BillingAgreement
* @ORM\OneToOne(
* targetEntity="AppBundle\Entity\BillingAgreement",
* inversedBy="singleUser",
* cascade={"persist"}
* )
* @ORM\JoinColumn(
* name="currentBillingAgreementID",
* referencedColumnName="billingAgreementID"
* )
*/
protected $currentBillingAgreement;
/**
* @var ArrayCollection
* @ORM\OneToMany(
* targetEntity="AppBundle\Entity\BillingAgreement",
* mappedBy="user",
* cascade={"persist"}
* )
* @Serializer\Exclude()
*/
protected $billingAgreements;
参考资料