gpt4 book ai didi

symfony - 学说2映射覆盖从MappedSuperclass继承的inversedBy字段

转载 作者:行者123 更新时间:2023-12-04 11:40:34 27 4
gpt4 key购买 nike

另一个问题。我有一个抽象的 BaseLog 实体,它保持与我的用户的关联。
此外,我有 2 个扩展 BaseLog 的实体(FooLog 和 BarLog)。此外,我有我的用户实体,它应该拥有两个与 Log 的关联。一种用于 FooLog,一种用于 BarLog。这是我的问题。我收到错误消息,因为我不知道如何在扩展实体时覆盖 BaseLog 的 inversedBy 字段。请你帮助我好吗。

因为我觉得我的解释不是很好,这里是我的实体的设置。

BaseLog

/** @ORM\MappedSuperclass */
abstract class BaseLog {
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="logs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* })
*/
private $user;
}

FooLog
/** @ORM\Entity */
class FooLog extends BaseLog {
// Some additional fields
}

BarLog
/** @ORM\Entity */
class BarLog extends BaseLog {
// Some additional fields
}

用户
/** @ORM\Entity */
class User {
/**
* @ORM\OneToMany(targetEntity="FooLog", mappedBy="user", cascade={"persist"})
*/
private $fooLogs;

/**
* @ORM\OneToMany(targetEntity="BarLog", mappedBy="user", cascade={"persist"})
*/
private $barLogs;
}

我如何在 FooLog 和 BarLog 中覆盖 BaseLog 的 inversedBy。

我在这个设置上遇到了几个映射错误:
基本日志
  • 基本日志:关联 BaseLog#user 指的是不存在的反面字段 User#logs。
  • FooLog:关联 FooLog#user 指的是不存在的反面字段 User#logs。
  • 条形日志:关联 BarLog#user 指的是不存在的反面字段 User#logs。
  • 用户:映射 User#fooLogs 和 FooLog#user 彼此不一致。
  • 用户:映射 User#barLogs 和 BarLog#user 彼此不一致。

  • 请帮我整理我的映射。

    最佳答案

    我对单一继承有类似的问题。我通过在两个实体类(父类和继承类)中定义相同的关联但名称不同来解决这个问题。在你的情况下,你可以试试这个:

        /** @ORM\Entity */
    class FooLog extends BaseLog {
    /**
    * @ORM\ManyToOne(targetEntity="User", inversedBy="foologs")
    * @ORM\JoinColumns({
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
    * })
    */
    private $user;
    }

    在 BarLog 类中:
    /** @ORM\Entity */
    class BarLog extends BaseLog {
    /**
    * @ORM\ManyToOne(targetEntity="User", inversedBy="barlogs")
    * @ORM\JoinColumns({
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
    * })
    */
    private $bar_user;
    }

    注意不同的名称($bar_user)。
    您还必须在用户实体中定义 foologs 和 barlogs 属性。这消除了学说验证错误。

    关于symfony - 学说2映射覆盖从MappedSuperclass继承的inversedBy字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13832517/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com