当前位置: 首页 > 知识库问答 >
问题:

交响乐/教义:特质与注释

於乐
2023-03-14

我有一个实体Test,它将从traits中获取其属性(和基本方法):

class Test {
   use Trait_title;
}

trait Trait_title{
    /**
     * @ORM\Column(type="string", length=255, nullable=false)
     */
    private $title;
}

这是正确的。但是,当我尝试将注释放在测试use语句前面时,当我尝试更新模式时,symfony忽略了部分注释或完整注释:

class Test {
    /**
     * @ORM\Column(type="string", length=255, nullable=false) //will be ignored...
     */
   use Trait_title;
}

trait Trait_title {
    private $title;
}

这样做的目的是将条令注释的默认值移动到trait中,但也允许设置一些自定义注释,如每个实体的nullable


共有1个答案

颜永怡
2023-03-14

您要查找的是映射覆盖。

你应该看看学说官方留档来实现这一点:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/override-field-association-mappings-in-subclasses.html

还有一个完全适合您的用例的示例,覆盖Trait映射信息。

有时,要重写的映射来自使用特征的实体,其中特征具有映射元数据。本教程解释如何覆盖映射元数据,特别是元数据的属性和关联。

第二种方法是通过重新定义映射信息来覆盖trait属性。有关此解决方案的更多详细信息,请参阅此答案:https://stackoverflow.com/a/11939306/4829152

 类似资料:
  • 当我在构造函数内的behat上下文文件中注入服务时,我想将behat与symfonyflex一起使用,autowire不起作用。我需要显式地将服务配置为public,以便在behat中使用该服务。有没有其他方法可以在不公开的情况下在behat上下文文件中注入服务? 在这里,我得到下面的错误"应用\数据消费者"服务或别名已被删除或内联时,容器被编译。您应该将其公开,或者直接停止使用容器,转而使用依赖

  • 我写我自己的CMS与教义2.5.4和纯PHP 5。 这是我的CMS(谷歌链接)。 在构建过程中,我反驳了这个错误: 错误NewsDAO:异常“条令\ORM\Mapping\MappingException”和消息“Class”News不是有效的实体或映射的超类。'in/var/www/html/xxxxx.com/public_html/vendor/doctor/orm/lib/doctor/o

  • 特征是语言的结构构造,允许 - Composition of behaviors. 接口的运行时实现。 与静态类型检查/编译的兼容性 它们可以被视为承载默认实现和状态的接口。 使用trait关键字定义特征。 下面给出了一个特征的例子 - trait Marks { void DisplayMarks() { println("Display Marks"); } } 然

  • 本章收集 Swoft 优质教程,方便开发者快速学习上手。如果您有好的优质教程,可以联系我们 (Swoft@qq.com)。 1.x 系列 视频 Sunny 系列 Swoft 高性能协程框架 老司机系列 Swoft 速学基础篇 Swoft 基础进阶篇 2.x 系列 文章 Swoft2.x 学习社区 Swoft2.x 从入门到微服务 Swoft2.x 小白系列教程 视频 Sunny 系列 Swoft2

  • 一、继承 1.1 Scala中的继承结构 Scala 中继承关系如下图: Any 是整个继承关系的根节点; AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object; AnyVal 是所有值类型的一个标记; Null 是所有引用类型的子类型,唯一实例是 null,可以将 null 赋值给除了值类型外的所有类型的变量; N

  • 本文向大家介绍Scala特质基础,包括了Scala特质基础的使用技巧和注意事项,需要的朋友参考一下 示例 这是Scala中特性的最基本版本。 由于没有为trait声明超类Identifiable,因此默认情况下它是从AnyRefclass扩展的。因为没有getIdentifier提供的定义Identifiable,所以Puppy该类必须实现它。然而,Puppy继承的实现printIdentific