在扩展另一个实体的实体中使用鉴别器

2024-03-31

我正在尝试使用Discriminator在一个从另一个实体延伸出来的实体中。这是我制作的代码:

/**
 * @ORM\Entity
 * @ORM\Table(name="usuarios_externos.usuarios", schema="usuarios_externos")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({
 *     "natural" = "Natural",
 *     "empresa" = "Empresa"
 * })
 * @UniqueEntity(fields={"correo_alternativo"}, message="El correo electrónico ya está siendo usado.")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
 */
class Usuario extends BaseUser {
    ....
}

但我在运行命令时收到此错误doctrine:schema:validate:

[Doctrine\ORM\Mapping\MappingException] 实体 'UsuarioBundle\Entity\Usuario' 必须是鉴别器映射的一部分 'UsuarioBundle\Entity\Usuario' 被正确映射到 继承层次结构。或者你可以做 'UsuarioBundle\Entity\Usuario' 一个抽象类来避免这种情况 发生异常。

有任何解决这个问题的方法吗?可以在扩展类中使用鉴别器吗?


答案就在那里warning信息!

基本上,它告诉你的是Usuario的定义方式可能会导致麻烦。在当前形式中,此代码允许您创建一个实例Usuario并与之合作。但等一下。这在鉴别器图中没有定义。那么,当你尝试坚持下去时会发生什么呢?Boom!...或者至少它会抛出一个丑陋的异常。

现在,我知道您可能根本没有考虑过实例化Usuario。这只是一个基类Natural and Empresa, but 教义不知道这一点.

那么,如何解决它呢?根据您的需求,有两种可能的情况:

Usuario应该是可实例化的

也就是说,您的应用程序中的用户可以是Natural, Empresa或者只是简单的Usuario。情况可能并非如此,但它可能适用于未来的读者。

解决方案: add Usuario到鉴别器图。这将使您的用户有可能成为这三种类型中的任何一种。

 * ...
 * @ORM\DiscriminatorMap({
 *     "usuario" = "Usuario",
 *     "natural" = "Natural",
 *     "empresa" = "Empresa"
 * })
 * ...

Usuario should not可实例化

也就是说,您的应用程序中的用户可以是Natural or Empresa,但从来没有Usuario.

解决方案: make Usuario an abstract班级。这将导致它无法被实例化。

abstract class Usuario extends BaseUser {
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在扩展另一个实体的实体中使用鉴别器 的相关文章

  • 克隆和引用传递问题

    所以在过去的几天里 我一直在绞尽脑汁地试图让一个类能够正确克隆 问题是克隆不会删除 重做任何引用传递 结果是 主数据对象仍然作为引用传递 从而完全抵消了克隆的效果 这是问题的简化版本 class my class private data
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • 如何使用 php imap 将邮件消息移动到文件夹

    我似乎无法将邮件移至已保存的文件夹 这是我的代码 mbox imap open mail server mail port mail folder mail username mail password or die Error openi
  • 在 Drupal 中选择性地删除页面的样式表

    我正在尝试为首页制作不同的布局 在此过程中 我声明了名为 front page css 和 page front tpl php 的新样式表 我正在使用加载responsive sidebar css 的 Zen 子主题 我想删除 resp
  • TCPDF / FPDI 可以接受 PDF 作为字符串吗?

    是否可以将 TCPDF 或 FPDI PDF 作为字符串提供 我有一个传入的 PDF 数组作为字符串 但无法写入磁盘 我在文档中找不到与此相关的任何内容 如果没有 是否有一种有效的方法来从内存或作为对象存储 读取这些 PDF 将它们喂给 F
  • 在 PHP 中拆分 XML

    我有一个带有根元素和多个项目子元素的合并 xml 像这样的东西
  • 从目录中读取所有文件内容 - php

    这实际上是一个简单的任务 我想显示指定文件夹中所有文件的内容 我正在传递目录名称 echo a href row qname a 在第二页上 我正在迭代目录内容 while entryname readdir myDirectory if
  • 打印一个模式以显示最多 5 行 5 列的数字,例如 5 4 3 2 1 和下一行 4 3 2 1 5 直到第 5 行

    这是一个正方形图案 每行有 5 列 共有 5 行 图案如下所示 5 4 3 2 1 4 3 2 1 5 3 2 1 5 4 2 1 5 4 3 1 5 4 3 2 我的代码如下以获得模式 但当计数器达到 1 并显示在相应的列值中时 我无法重
  • 如何使用 RewriteRule 来为 PHP 修改 $_SERVER['REQUEST_URI'] ?

    有了这个 htaccess RewriteEngine On RewriteRule foo foo 1 here I tried L PT C etc RewriteRule index php L 我已经尝试了第一个 RewriteRu
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 使用 DateTime 类计算日期差异时出错

    我正在尝试使用 DateTime 类 php gt 5 3 来计算 2 个日期的差异 手册中的示例简单明了 我尝试了该示例并且效果很好 但如果改变开始和结束日期 就会出现问题 this gt start date 2011 03 01 th
  • 根据类别 woocommerce 更改同一产品的默认变体值

    我正在研究一种根据其所属类别显示同一产品的默认变体值的方法 例如 我出售一张带有蓝色和红色选项的卡 当用户进入 一 类别时 我希望默认值为蓝色 如果他属于第二类 则该值将为红色 我发现了一个钩子woocommerce product def
  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • 使用 IntlDateFormatter 转换非公历日期

    我应该如何使用将非公历日期转换为其他日历类型IntlDateFormatter 我要转换 1392 01 02 from persian to islamic日历 我尝试了以下代码 但它没有转换日历 formatter IntlDateFo
  • PHP函数返回值到html标签

    我想获取函数的返回值并将其显示到特定的id 在我的 Class php 中 我有一个名为 login 的函数 用于验证密码是否正确 不正确
  • 如何使用xquery查找节点并向其添加子节点?

    是否可以使用xpath xquery查询特定的xml节点 然后向其导入 添加子节点 示例 代码取自http codepad org gJ1Y2LjM http codepad org gJ1Y2LjM 这是在类似的问题中提出的 但不相同 1
  • SimpleXML插入处理指令(样式表)

    我想集成一个XSL文件在一个XML给我的字符串php CURL命令 我试过这个 output XML gived me by curl option hotel simplexml load string output hotel gt a
  • 在 PHP 命令行上显示完整的堆栈跟踪

    Problem 我的 PHP 堆栈跟踪缩写为 Stack trace 0 www html table app create php 128 SoapClient gt call call Array 1 www html table ap

随机推荐

  • 不同的产品风格是否可以有不同的 build.gradle ?

    我正在工作的项目是为基于 Amazon 的设备以及 Android 构建的 几乎 95 的代码库在这两者之间是通用的 因此 我没有将这两个项目作为不同的项目 而是考虑使用产品风味将这两个项目放在一起 请告诉我是否还有其他更好的解决方案 但我
  • 如何在柔性容器中设置间隙(排水沟)?

    我正在尝试创建某种柔性容器的通用组件 该组件由容器及其连续的子组件组成 如果一行中的孩子太多 没有足够空间的孩子会去第二行 它可以使用 Flexbox 轻松实现 但我也希望能够在元素之间设置装订线 一行的第一个和最后一个元素不应分别具有左边
  • 如何避免两个不同的线程从数据库读取相同的行(Hibernate 和 Oracle 10g)

    假设我有两个不同的线程 T1 和 T2 它们同时访问同一个数据库并从同一个表中获取数据 现在 在线程启动时 我需要从表中获取数据并将行存储到集合中 然后我将使用该集合在其他地方执行一些工作 我不希望两个线程能够处理相同的数据 因为这会导致重
  • 如何修复“无法创建 ViewModel 类的实例”?

    我尝试了 MVVM 架构 实现了所有必需的类和方法 在 MainActivity 中创建 ViewModel 类的对象时 出现此错误java lang RuntimeException Cannot create an instance o
  • 使用 AJAX、MVC 实现 OOP PHP?

    I m new to the OOP paradigm and AJAX jQuery but would like to create a basic site employing MVC architecture in PHP with
  • AWS:保存每条 SNS 消息

    保存 记录在 AWS SNS 主题上发布的每条消息的最简单方法是什么 我认为可能有一个神奇的设置可以自动将它们推送到 S3 或数据库 或者可能是自动支持 HTTP 目标的数据库服务 但似乎并非如此 也许需要通过 Lambda 函数来完成 目
  • 使用 JQuery 重定向到第三方页面并预填充表单值

    当单击网页上的链接时 我想重定向到第三方网页 例如谷歌 并使用我的查询预填充搜索窗口并模拟点击 只用jquery就可以吗 您不需要任何 JavaScript 即 当您也想模拟点击时 我想 您想要有一个类似自定义搜索框的东西 然后打开Goog
  • 使用 setInterval 测试函数时 Mocha 和 Chai 测试失败

    我是 TDD 新手 正在使用 Mocha 和 Chai 我创建了一个测试 当值增加时该测试通过 但是当该增加放在 setInterval 内时 它会失败 这段代码的目的是让某些东西在屏幕上移动 function startMovingThi
  • 如何在 Android 中打开 raw 文件夹中的文件

    我正在使用 MultipartEntity 并且尝试引用原始文件夹中的文件 这是代码 MultipartEntity reqEntity new MultipartEntity reqEntity addPart new FormBodyP
  • 无法使用设备上的 Instruments 启动 iOS 应用程序

    应用程序安装 仪器启动 但仪器中的下拉菜单显示选择目标 并且应用程序从未启动 控制台说 6 14 11 2 36 22 PM Instruments 1951 XRMobileDeviceException while performing
  • Flexbox等列高设置主列高度?

    我做了这个例子 example max width 600px flex row display flex flex wrap wrap flex row col flex grow 1 flex basis 0 flex row cont
  • Javascript正则表达式适用于不在某些字符之间的所有单词

    我正在尝试返回不在方括号之间的所有单词的计数 所以给 don t match these words but do match these 最后四个词我数到了 4 这在 net 中有效 b
  • 保存终端 Bazel 构建输出

    是否可以保存在终端中运行的 bazel build 命令的输出 命令是 bazel build tensorflow examples image retraining label image bazel bin tensorflow ex
  • @RolesAllowed 在 Jersey 资源上始终被拒绝(禁止)

    我正在尝试根据我通过 Jersey JAX RS 公开的资源的角色设置身份验证 该资源存在于 Glassfish 实例中 其中基于角色的身份验证 具体来说 通过 RolesAllowed 当前正在按需要工作 我在 servlet 容器中运行
  • 通过appengine上传文件到Google Cloud Storage

    我正在尝试将文件上传到 Google Cloud Storage 我的Servlet代码是 public class UploadFile extends HttpServlet private final String BUCKET XX
  • 基于 ec2 发行版动态设置 ansible-playbook 用户变量

    我正在创建一个 ansible 剧本 它会遍历一组 AWS EC2 主机并安装一些基本软件包 在 playbook 可以执行任何任务之前 playbook 需要使用正确的信息登录到每个主机 2 种类型的发行版 AWS Linux 或 Ubu
  • Window.open() 在 WKWebView 中不起作用

    我试图在 safari 浏览器中打开一个 URL 同时从应用程序的 iOS WKWebView 单击它 但是当我从 javascript 调用 window open 时没有任何效果 它没有达到 WKWebView 中的决定策略 Found
  • 如何在 Node.js 中动态创建数据库连接?

    我在 Node js 服务器中使用express js 框架创建了 API 我的数据库是mysql 我能够创建与数据库的连接 下面是连接代码 现在我想动态创建连接 我有 2 个数据库 数据库第一和数据库第二 var mysql requir
  • 通过远程浏览器访问 Superset

    我已经安装了阿帕奇超级集 https superset incubator apache org index html在远程 Linux 服务器上并在端口 8080 上初始化它 当我在 Linux 服务器上拉出 localhost 8080
  • 在扩展另一个实体的实体中使用鉴别器

    我正在尝试使用Discriminator在一个从另一个实体延伸出来的实体中 这是我制作的代码 ORM Entity ORM Table name usuarios externos usuarios schema usuarios exte