重写 Doctrine 2 继承中的 inversedBy 映射

2024-03-11

我有以下实体:

class Restaurant
{
    /**
     * @OneToMany(targetEntity="CollectionTime", mappedBy="restaurant")
     */
    protected $collectionTimes;

    /**
     * @OneToMany(targetEntity="DeliveryTime", mappedBy="restaurant")
     */
    protected $deliveryTimes;
}

映射到同一实体的两个子类:

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorMap({
 *   "CollectionTime" = "CollectionTime",
 *   "DeliveryTime"   = "DeliveryTime"
 * })
 */
abstract class OrderTime
{
    /**
     * @ManyToOne(targetEntity="Restaurant")
     */
    protected $restaurant;
}

/**
 * @Entity
 */
class CollectionTime extends OrderTime
{
}

/**
 * @Entity
 */
class DeliveryTime extends OrderTime
{
}

现在的问题是,doctrine orm:validate-schema报告以下错误:

  • 字段 Restaurant#collectionTimes 位于双向关系的反面,但目标实体 CollectionTime#restaurant 上指定的mappedBy 关联不包含所需的“inversedBy=collectionTimes”属性。

  • 字段 Restaurant#deliveryTimes 位于双向关系的反面,但目标实体 DeliveryTime#restaurant 上指定的mappedBy 关联不包含所需的“inversedBy=deliveryTimes”属性。

简而言之,教义期望每一个mappedBy拥有一个inversedBy另一方面。

到目前为止我能看到的唯一解决方案是移动OrderTime::$restaurant属性并映射到CollectionTime and DeliveryTime,只是为了能够添加适当的inversedBy映射:

abstract class OrderTime
{
}

/**
 * @Entity
 */
class CollectionTime extends OrderTime
{
    /**
     * @ManyToOne(targetEntity="Restaurant", inversedBy="collectionTimes")
     */
    protected $restaurant;
}

/**
 * @Entity
 */
class DeliveryTime extends OrderTime
{
    /**
     * @ManyToOne(targetEntity="Restaurant", inversedBy="deliveryTimes")
     */
    protected $restaurant;
}

但这样比较麻烦,而且违背了继承的原则。

有没有办法覆盖inversedBy子类中的属性,而不必在子类中(重新)声明整个属性?

我调查过@AssociationOverrides http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#association-override and @AttributeOverrides http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#attribute-override,但它们似乎不是为此目的而设计的。


您可以覆盖inversedBy自教义 2.6 起。那看起来像这样:

/**
 * @Entity
 * @ORM\AssociationOverrides({
 *     @ORM\AssociationOverride(name="restaurant", inversedBy="collectionTimes")
 * })
 */
class CollectionTime extends OrderTime
{
}

/**
 * @Entity
 * @ORM\AssociationOverrides({
 *     @ORM\AssociationOverride(name="restaurant", inversedBy="deliveryTimes")
 * })
 */
class DeliveryTime extends OrderTime
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重写 Doctrine 2 继承中的 inversedBy 映射 的相关文章

随机推荐

  • 在 R 的 JAGS 或 BUGS 中指定离散威布尔分布

    我使用 R 中的 JAGS 将威布尔模型拟合到离散值 将威布尔模型拟合到连续数据没有问题 但当我切换到离散值时 我遇到了麻烦 以下是在 JAGS 中拟合威布尔模型的一些数据和代码 draw data from a weibull distr
  • C++ 变量声明语法

    我最近遇到了这个结构 整数 米 这似乎相当于 整数米 奇怪的是 我以前从未见过这个特殊的成语 有人可以给我指出一个参考资料 我可以在其中阅读相关规范 或者直接解释一下吗 这也适用于直 C 吗 谢谢 困惑的开发者 这不是一个 习语 它只是一对
  • 使用数据注释进行模型验证的错误消息

    给定以下课程 using System ComponentModel DataAnnotations public class Book public Contact PrimaryContact get set public Contac
  • React JS 不支持 Html“align”属性

    我是 ReactJS 的新手 在反应组件中 我已经 var SaveOrganization React createClass render function return div align center a href addVenue
  • Nuxt 3 - 如何每n分钟刷新一次获取的数据

    因此 在我的数据库中 数据每分钟都会刷新 数据实际上更新 我检查过 然后我在页面上显示这些数据 当我在页面之间切换以及手动刷新页面时 数据会被获取 但如果我坐在一个页面上例如 5 分钟 即使数据库中的数据更新 数据也不会在页面端刷新 是否可
  • IE8 CSS 和 html 与 IE7 对比

    请原谅这里的任何鲁莽 我正无能为力地寻找答案 我正在寻找从 IE7 更改为 IE8 的特定 html 和 css 标签的列表 如果存在 或一些资源指南 具体来说 我想看到类似 此代码在 IE7 中有效 但在 IE8 中无效 这是损坏的标签相
  • Javascript document.getSelection

    我正在尝试使用 document getSelection 来选择我在所见即所得编辑器的文本区域中输入的文本 但只有当您选择文本区域之外的文本时 它才有效 不知道有没有办法让它选择文本区域内的文本 下面是所见即所得文本编辑器的文本区域 您需
  • 从按分钟计算的原始数据中按小时聚合 MySQL 数据

    我有一个表 table 1 其中包含每分钟的数据 如下所示 date time value 2015 06 05 18 00 00 222 663 2015 06 05 18 01 00 222 749 2015 06 05 18 02 0
  • Mac系统上检测框架使用情况?

    我想在 OSX 上开发示例框架 并要求在任何时候该框架只能由单个客户端使用 我不知道如何实现这一点 他们有 API 来检测框架正在使用的天气吗 我们可以为此使用一些与文件相关的 API 吗 我看过一个 Windows 示例 其中使用以下命令
  • 在 jQuery 1.8 中的自定义过滤器选择器中获取“匹配”对象

    作为参考 这里有一篇文章使用 jQuery 创建自定义过滤器选择器 http answers oreilly com topic 1055 creating a custom filter selector with jquery 介绍 对
  • 大型文本文件中的词频

    我试图读取一个大文本文件并输出其中的不同单词及其计数 到目前为止 我已经尝试了几次 这是迄今为止我想出的最快的解决方案 private static readonly char separators public IDictionary
  • 为什么分配给空列表有效但分配给空元组无效?

    这出现在最近的 PyCon 演讲 https youtu be MCs5OvhV9S4 t 42m17s 该声明 没有做任何有意义的事情 但它也不会抛出异常 我感觉这一定是由于拆包规则造成的 你可以做元组拆包 http openbookpr
  • Amazon S3 区域转移? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何将特定区域的 S3 存储桶的内容传输到另一个特定区域的另一个 S3 存储桶 如果可以的话请提供最简单的方法和详细的步骤 您可以使用AWS 控制台
  • Python 中的yield 和C# 中的yield 之间的区别

    有什么区别yieldPython 中的关键字和yieldC 中的关键字 C s yield return相当于Python的yield and yield break只是return在Python中 除了这些细微的差别之外 它们的目的基本相
  • 智能垂直流线布局

    我正在 JPanel 布局 Swing 中寻找以下行为 基本上它会以垂直方式排列组件 一个组件彼此排列 当组件无法垂直放入容器中时 应将下一个组件添加到新行中 这将动态地继续 根据需要添加新行 添加 3 个标签后 它看起来像这样 label
  • Spring ControllerAdvice和认证/授权异常处理

    在我的 Spring Boot 应用程序中 我有以下 Web 安全配置 Configuration EnableWebSecurity public class WebSecurityConfiguration extends WebSec
  • SQL 对密码进行哈希处理

    我使用 SQL 语句手动从旧数据导入到 MSSQL 当我从原始文本密码散列到数据库中的 MVC 5 密码 HASH 字段时 我得到有趣的字符 如何将哈希插入 mvc5 身份表 MVC 5 表也使用 nvarchar select HASHB
  • 嵌套文档字符串的 Doctest

    假设我有以下代码 def foo s A dummy function foo For example gt gt gt a This is a test string line 1 This is a test string line 2
  • 如何将元素的属性添加到角度指令

    我是角度新手 我想编写一个指令 其中包含我在 html 中使用时添加到其中的所有属性 例如 这是我的指令 use strict app directive province function compile return restrict
  • 重写 Doctrine 2 继承中的 inversedBy 映射

    我有以下实体 class Restaurant OneToMany targetEntity CollectionTime mappedBy restaurant protected collectionTimes OneToMany ta