Doctrine orm 升级后与条令的关联错误

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

我正在努力将一款产品从Symfony 2.7升级到4.2(目前为3.4),并且遇到了一些现有的关联

  • 字段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;
参考资料