doukong1897 2015-06-16 12:51
浏览 105
已采纳

Doctrine获取对象,操作数据并插入新行

I have three doctrine objects who can be connected to each other in different ways. I need to get them from my database, manipulate some of the data and insert them as new rows.

Example:

entity A:
id
user
manipulateThis
B
C

entity B:
id
user
manipulateThis
C

entity C:
id
user
manipulateThis
A
D

entity D:
id
manipulateThis
C


$allA = SELECT a FROM Acme\Bundle\A a WHERE user=':user'
$allB = SELECT b FROM Acme\Bundle\B b WHERE user=':user'
$allCandD = SELECT c FROM Acme\Bundle\C c JOIN c.d WHERE user=':user'

now I want to manipulate all the manipulateThis columns and add all the objects I got into new rows in the database. How do I do this?

I can't just persist all of those objects and then flush them, because when the objects get cloned (which need to happen if I want new rows), the ID's will be removed.

How can I manage to do this?

UPDATE

seems I can use __clone to make this work. But now I have a problem where I don't know if one object is persisted or not.

For example: Entity A can have relations to entity B. But not all B entities have a relation to entity A. But I need to persist those entities too. I can persist and flush all A entities, and all the B entities which have a connection will be flushed aswell. But now nothing happens with the B entities who have no connection. And I can't flush all the B entities, because than I get double rows. And how to fix this problem with the C and D entities, which are even further away?

  • 写回答

1条回答 默认 最新

  • duan1979768678 2015-06-16 12:55
    关注

    Just using PHP's clone is sufficient to duplicate an entity as a new row

    $newEntity = clone $alreadyPersistedEntity;
    
    // Manipulate $newEntity as desired
    
    $em->persist($newEntity);
    $em->flush();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能