我有一个带有数组类型字段的Doctrine实体:

/**

* @ORM\Table()

*/

class MyEntity

{

(...)

/**

* @var array $items

*

* @ORM\Column( type="array" )

*/

private $items;

/**

* @param SomeItem $item

*/

public function addItem(SomeItem $item)

{

$this->items[] = $item;

}

(...)

}

如果我将元素添加到数组,此代码正常工作:

$myEntityObject->addItems(new SomeItem());

$EntityManager->persist($myEntityObject);

$EntityManager->flush();

$myEntityObject使用正确的数据保存到数据库(数组被序列化,并在查询数据库时反序列化).

不幸的是,当我在不改变该数组大小的情况下更改数组中的一个对象时,如果我试图将更改保存到数据库,则Doctrine不会执行任何操作.

$items = $myEntityObject->getItems();

$items[0]->setSomething(123);

$myEntityObject->setItems($items);

$EntityManager->persist($myEntityObject);

$EntityManager->flush();

print_r($myEntityObject);

虽然,该代码的最后一行中的print_r显示更改的对象的数据,但是如果数组大小没有更改,则Doctrine不知道数组内的某些内容已更改.有没有办法强制Doctrine保存在该字段中所做的更改(或者轻轻地告知它该字段中需要保存的更改)?

只是在文档中找到了解决我的问题的方法:

它需要对代码进行大量更改,但它可以正常工作.有人知道如何保留其他字段的默认跟踪策略,并仅将NotifyPropertyChanged用于存储数组的字段吗?

PHP强制类型定义数组,php – 如何强制Doctrine更新数组类型字段?相关推荐

  1. XML之文档类型定义和合法性(转)

    来至:liang--liang博客:http://www.cnblogs.com/liang--liang/archive/2008/01/15/1039277.html 好牛 XML被作为一种元标记 ...

  2. typescript 基础类型定义

    1.typescript 类型定义 代码如下(示例): //基础类型/*** 1. 布尔 boolean* 2. 数字 number* 3. 字符串 string* 4. 数组 array* 5. 元 ...

  3. typescript(四)ts中函数的参数和返回值的类型定义

    前面我们讲到过ts的静态类型定义中的函数类型定义,先来回顾下: const fnA: () => string = () => { return '1' } const fnB: () = ...

  4. JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)

    在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...

  5. 为什么阿里巴巴强制要求使用包装类型定义属性?

    欢迎关注方志朋的博客,回复"666"获面试宝典 在阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型也有着一些规定: 这里强制要求使用包装类型,原因是什么呢? 我们来看一 ...

  6. nvarchar转换为int类型失败_2.2 C++强制类型转换 | 将3.3转换为整型输出

    强制类型转换运算符 在C++的表达式中,不同的数据类型会自动地转换类型进行运算,但有的时候也需要程序员自己进行强制类型转换,将某个表达式转换成自己所需要的数据类型. 强制类型转换的一般形式为 (类型名 ...

  7. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )

    文章目录 总结 一.使用 数组类型* 定义数组指针 二.完整代码示例 总结 typedef int(ArrayType)[3];ArrayType *p = NULL; 一.使用 数组类型* 定义数组 ...

  8. 实验5.6 定义包含5个元素的对象数组,每个元素都是Employee类型的对象

    题目 定义包含5个元素的对象数组,每个元素都是Employee类型的对象. Employee类,其中包括姓名.街道地址.城市和邮编等属性,以及change_name()和display()等函数.di ...

  9. Typescript 下 Mongoose 外键类型外键数组类型定义类型保护联合类型理解

    最近给项目上Typescript,记录在迁移的过程中遇到的一个问题. 问题背景 下面这段代码 定义了一个User 接口, Company接口, Order接口以及相应的mongoose model. ...

最新文章

  1. 用户一亿的网易新闻客户端质量如何?
  2. Postman安装与使用(网络请求神器)--post、get请求
  3. linux强制删除后登录不了,【已解决】更新之后无法登录
  4. python flask框架是什么_Python Flask框架详解
  5. 设置文件为源文件(和src一样)
  6. linux把profile文件删了怎么办,误删Profile后的处理
  7. 基于用户点击行为的数字图书搜索系统研究与实现 - 中国优秀硕士学位论文全文数据库...
  8. java贪吃蛇代码_java贪吃蛇游戏实现代码
  9. php获取input file路径,input上传文件获取路径为C:\fakepath\文件名
  10. flash花屏 html,电脑中Firefox火狐浏览器出现卡顿、花屏、Flash崩溃等问题的解决方法...
  11. 韩立刚《计算机网络》| 第5章 传输层
  12. 完全兼容ADI的ADM2582E/ADM2587E的(MORNSUN)TD(H)541S485H
  13. uniapp 打开第三方APP
  14. dble安装zk及配置mysql主从模式,在已有mysql存在数据升级mysql配置
  15. 病痰饮者不能率以温药和之
  16. Fleck WebSocket使用
  17. 【如何20秒内进入XP系统】
  18. Python 【爬虫3】_微信小程序_小游戏数据助手数据爬取
  19. 游戏思考系列02:技能伤害计算流程(不涉及buff)
  20. C 结构体 struct 详解

热门文章

  1. 详解Linux环境软RAID 5建立过程
  2. OJ1180: 成绩统计(结构体专题)(C语言)
  3. 信息学奥赛一本通(1071:菲波那契数)
  4. 字符串处理 —— 最大最小表示法
  5. 大整数加法(信息学奥赛一本通-T1168)
  6. 计算线段长度(信息学奥赛一本通-T1033)
  7. 信息学奥赛C++语言:津津的储蓄计划
  8. 信息学奥赛一本通C++语言——1047:判断能否被3,5,7整除
  9. 15 SD配置-企业结构-分配-给工厂分配起运点
  10. 55 MM配置-评估和科目设置-定义账户分类参考