Doctrine - 存储 ArrayCollection 键

2023-12-22

每当我将 ArrayCollection 与 Doctrine ORM (2.3, PHP > 5.4) 一起使用,并将对象值与集合中的键相关联时(例如当使用set方法),值被正确存储在数据库中。但是当我想从实体检索集合时,不会检索键,而是使用数字索引。

例如,如果我有以下课程:

/** @Entity */
class MyEntity
{
    /** @OneToMany(targetEntity="MyOtherEntity", mappedBy="mainEntity") */
    private $myArray;

    public function __construct()
    {
        $this->myArray = new ArrayCollection();
    }

    public function addOtherEntity($key, $value)
    {
        $this->myArray->set($key, $value);
    }

    ...
}

/** @Entity */
class MyOtherEntity
{
    /** @ManyToOne(targetEntity="MyEntity", inversedBy="myArray") */
    private $mainEntity;
    ...
}

The set方法工作正常,但是当我检索键入的信息时$myArray消失了。

如何让 ORM 正确记住密钥?预先谢谢你。


这是通过以下方式解决的:

/** @Entity */
class MyEntity
{
    /** @OneToMany(targetEntity="MyOtherEntity", mappedBy="mainEntity", indexBy="key") */
    private $myArray;

    public function __construct()
    {
        $this->myArray = new ArrayCollection();
    }

    public function addOtherEntity($key, $value)
    {
        $this->myArray->set($key, $value);
    }

    ...
}

/** @Entity */
class MyOtherEntity
{
    /** @ManyToOne(targetEntity="MyEntity", inversedBy="myArray") */
    private $mainEntity;

    /** @Column(name="MyOtherTable_Key", type="string", unique=true, length=50)
    private $key;
    ...
}

你还需要MyOtherTable_Key在您的数据库模式中,以便它可以正确存储密钥。

请记住始终将对象键设置到属性中。一种方法是在构造函数中声明键。

public function __construct($key)
{
    $this->key = $key;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Doctrine - 存储 ArrayCollection 键 的相关文章

  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • 在 PHP 中包含 PHP 文件

    我有一个网站 它运行 PHP if 语句来根据附加文件的类型 即 Jpg Txt MP4 显示内容 所以我显示 TXT 文件的代码是 if post attachment txt display attachment div class d
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • 使用 PHP Selenium Webdriver 单击下拉菜单中的选项?

    我正在使用 PHP Selenium Webdriver 包装器Facebook https github com facebook php webdriver 任何人都可以给我一个如何单击或从选择下拉菜单中选择选项的示例吗 我已经尝试过这
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 从所有会话中注销

    我有一个注销选项 这是我的代码 session start session destroy setcookie key time 60 60 24 setcookie username time 60 60 24 我想添加另一个选项来注销所
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • Android Q - 未经批准连接wifi

    我正在开发一个自动连接到 Wifi 的应用程序 您会在下面找到我的代码 效果很好 class MainActivity AppCompatActivity override fun onCreate savedInstanceState B
  • 从 ElasticBeanstalk EC2 到 Redis (ElastiCache) 的连接失败

    我们使用 ElasticBeanstalk 来设置一些 Node js 环境 目前 我们使用 Redis 作为会话存储 它设置在 ElastiCache 中 当我 ssh 进入 EC2 实例并 netcat Redis 存储时 我可以确认网
  • C# 泛型接口协方差

    我不确定这里发生了什么 但我使用以下代码收到编译器错误 namespace SO interface IUser
  • 如何检查浏览器是否支持 Polymer?

    我如何检查 JS 或 HTML 代码 当前浏览器是否支持 Polymer 简短回答 快速测试 Firefox 38 0 5 提示 否 而 Chrome 44 0 2403 130 m 提示 是 function supportsPolyme
  • javascript 中的异步和等待[重复]

    这个问题在这里已经有答案了 我是初学者JS并在经历时async and await我遇到了下面的例子 const get async gt const y await hello console log y console log star
  • Visual Studio:防止打开解决方案资源管理器中的文件夹时折叠

    每次我在 Visual Studio 2022 中打开项目时 解决方案资源管理器树中的所有文件夹都会崩溃 这非常烦人并且打断了我的工作流程 我找不到这方面的任何设置 有没有办法阻止这种行为 这似乎也发生在旧版本的 Visual Studio
  • 根据另一个数组的值(未排序,而是分组)将 NumPy 数组拆分为子数组

    假设我有两个 NumPy 数组 x 1 2 8 2 9 1 3 8 9 4 3 5 5 2 3 6 4 7 7 2 3 8 2 2 9 5 3 10 2 3 11 2 4 y 0 0 1 0 1 1 2 2 2 0 0 笔记 值在x没有以任
  • 是否可以让 Node.js 使用 Rhino 作为 Javascript 引擎?

    我在网络应用程序上使用 Node js 完成多项工作 到目前为止一切正常 但 Node js 使用 Google 的 V8 作为默认的 Javascript 引擎 JSE 并且 V8 只能在 x86 和 ARM 指令集架构 ISA 上运行
  • 在标签栏控制器/导航控制器上方添加自定义视图?

    我尝试了以下代码 试图获取显示在选项卡栏控制器上方的自定义视图 该控制器恰好在所有选项卡中都有一个导航控制器 问题是它覆盖在导航栏的顶部 我希望导航栏向下移动 我尝试设置标签栏控制器的框架 但这根本没有移动它 BOOL applicatio
  • NSMutableString appendString 的内存泄漏

    我正在使用 XMLParser 来解析一些 XML 数据 它使用 NSMutableString resultString 来存储标签字符 在每个 parser didStarElement 方法中 我分配并初始化 resultString
  • 任何域对象都应该不可序列化吗?

    有没有办法告诉编译器 我希望我的对象默认可序列化 几乎每个序列化引擎都想知道您的对象是否合适 这可以采取以下形式 Serializable ISerializable BinaryFormatter SoapFormatter Serial
  • 在 TWinControl 类上添加属性

    我想将已发布的属性添加到 TWinControl 中 有没有办法在不需要重新编译基本源代码的情况下做到这一点 如果没有 有什么方法可以重新编译基本源代码而不需要太多麻烦 谢谢建议 编辑因为新想法 好吧 我想做的就是尝试覆盖 System p
  • 如何防止 Python print 添加换行符或空格? [复制]

    这个问题在这里已经有答案了 在Python中 如果我说 print h 我收到字母 h 和换行符 如果我说 print h 我收到字母 h 并且没有换行符 如果我说 print h print m 我得到字母 h 一个空格和字母 m 如何防
  • 如何根据javascript中的键合并和替换两个数组中的对象?

    我有两个数组对象 arrayList1 arrayList2 只是我试图将这两个数组合并为一个数组对象 我使用的以下术语 根据键名将两个数组合并为一个数组是type arrayList2 的值将覆盖 arrayList1 我得到了预期的输出
  • 我们如何在 React Native 应用程序中设置 .env?

    我们如何设置 env在反应本机应用程序中 如何在react native中进行环境设置 我使用 react native dotenv 包 安装它并将 react native dotenv 预设添加到项目根目录下的 babelrc 文件中
  • XBAP 与 FireFox 和 Windows 7

    Firefox 依赖 NET 3 5 安装程序安装的扩展和插件来运行 XBAP 不幸的是 在 Windows 7 中已经安装了 NET 3 5 运行时 有谁知道如何获取这些插件 扩展 以便您可以实际将 XBAP 部署到 Windows 7
  • Flex:当文本太长时换行

    我在想是否可以使用css来实现以下功能flexbox 在布局中 原来有2个div彼此相邻 左侧包含一组图标并具有固定宽度 右侧包含文本 可能会很长 有没有办法 如何使用只有CSS 尤其是Flexbox 当文本太长时 div 会换行 在第一个
  • 别名可变原始指针 (*mut T) 是否会导致未定义的行为?

    mut T and mut T导致编译错误 这太棒了 两次可变借用在客观上是错误的 Is mut T and mut T未定义的行为还是这是完全有效的事情 也就是说 可变指针别名有效吗 更糟糕的是 mut T and mut T实际上编译并
  • 使计算属性依赖于 emberjs 中另一个对象的所有属性

    是否可以使一个属性依赖于另一个对象的所有属性 例如 也在jsfiddle中 http jsfiddle net xgZ94 2 html javascript App Em
  • Doctrine - 存储 ArrayCollection 键

    每当我将 ArrayCollection 与 Doctrine ORM 2 3 PHP gt 5 4 一起使用 并将对象值与集合中的键相关联时 例如当使用set方法 值被正确存储在数据库中 但是当我想从实体检索集合时 不会检索键 而是使用数