• <bdo id='m1eq2'></bdo><ul id='m1eq2'></ul>
    <legend id='m1eq2'><style id='m1eq2'><dir id='m1eq2'><q id='m1eq2'></q></dir></style></legend>
      1. <tfoot id='m1eq2'></tfoot>
      2. <small id='m1eq2'></small><noframes id='m1eq2'>

        <i id='m1eq2'><tr id='m1eq2'><dt id='m1eq2'><q id='m1eq2'><span id='m1eq2'><b id='m1eq2'><form id='m1eq2'><ins id='m1eq2'></ins><ul id='m1eq2'></ul><sub id='m1eq2'></sub></form><legend id='m1eq2'></legend><bdo id='m1eq2'><pre id='m1eq2'><center id='m1eq2'></center></pre></bdo></b><th id='m1eq2'></th></span></q></dt></tr></i><div id='m1eq2'><tfoot id='m1eq2'></tfoot><dl id='m1eq2'><fieldset id='m1eq2'></fieldset></dl></div>

        如何将实体重新保存为 Doctrine 2 中的另一行

        时间:2023-08-19

          <tbody id='PQsB2'></tbody>
        <i id='PQsB2'><tr id='PQsB2'><dt id='PQsB2'><q id='PQsB2'><span id='PQsB2'><b id='PQsB2'><form id='PQsB2'><ins id='PQsB2'></ins><ul id='PQsB2'></ul><sub id='PQsB2'></sub></form><legend id='PQsB2'></legend><bdo id='PQsB2'><pre id='PQsB2'><center id='PQsB2'></center></pre></bdo></b><th id='PQsB2'></th></span></q></dt></tr></i><div id='PQsB2'><tfoot id='PQsB2'></tfoot><dl id='PQsB2'><fieldset id='PQsB2'></fieldset></dl></div>
        1. <legend id='PQsB2'><style id='PQsB2'><dir id='PQsB2'><q id='PQsB2'></q></dir></style></legend>

        2. <tfoot id='PQsB2'></tfoot>
            <bdo id='PQsB2'></bdo><ul id='PQsB2'></ul>

                  <small id='PQsB2'></small><noframes id='PQsB2'>

                  本文介绍了如何将实体重新保存为 Doctrine 2 中的另一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  假设我有实体 $e.是否有任何通用方法将其存储为另一行,该行将具有相同的实体数据但另一个主键?

                  Let's say I have entity $e. Is there any generic way to store it as another row, which would have the same entity data but another primary key?

                  为什么我需要这个:我正在实施某种临时数据库架构,而不是更新我只是需要创建另一个.

                  Why I need this: I'm implementing some sort of Temporal Database schema and instead of updating the row I just need to create another one.

                  推荐答案

                  尝试克隆并将以下方法添加到您的实体中

                  Try cloning and add the following method to your entity

                  public function __clone() {
                      $this->id = null;
                  }
                  

                  您可能需要分离 实体.我现在手边没有我的开发机器来测试这个.

                  You may need to detach the entity before persisting it. I don't have my dev machine handy to test this right now.

                  $f = clone $e;
                  $em->detach($f);
                  $em->persist($f);
                  $em->flush();
                  

                  更新

                  刚刚尝试使用一个简单的 SQLite 演示.你不应该需要做任何事情.以下对我有用,无需添加 __clone() 方法或做任何其他不寻常的事情

                  Update

                  Just tried using a simple SQLite demo. You shouldn't need to do anything. The following worked for me without adding a __clone() method or doing anything else out of the ordinary

                  $new = clone $old;
                  $em->persist($new);
                  $em->flush();
                  

                  刷新后,$new 实体有一个新 ID,并在数据库中保存为新行.

                  Once flushed, the $new entity had a new ID and was saved as a new row in the DB.

                  我仍然会通过 __clone() 方法将 ID 属性设为空,因为从纯模型视图来看它是有意义的.

                  I would still null the ID property via the __clone() method as it makes sense from a pure model view.

                  深入 Doctrine 代码,这是因为生成的代理类使用这一重要行实现了 __clone()

                  Digging into the Doctrine code, this is because the generated proxy classes implement __clone() with this important line

                  unset($this->_entityPersister, $this->_identifier);
                  

                  这篇关于如何将实体重新保存为 Doctrine 2 中的另一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:在学说 2 中选择日期之间的条目 下一篇:如何使用具有比较标准的 findBy 方法

                  相关文章

                  <small id='CkmD7'></small><noframes id='CkmD7'>

                    • <bdo id='CkmD7'></bdo><ul id='CkmD7'></ul>

                      <i id='CkmD7'><tr id='CkmD7'><dt id='CkmD7'><q id='CkmD7'><span id='CkmD7'><b id='CkmD7'><form id='CkmD7'><ins id='CkmD7'></ins><ul id='CkmD7'></ul><sub id='CkmD7'></sub></form><legend id='CkmD7'></legend><bdo id='CkmD7'><pre id='CkmD7'><center id='CkmD7'></center></pre></bdo></b><th id='CkmD7'></th></span></q></dt></tr></i><div id='CkmD7'><tfoot id='CkmD7'></tfoot><dl id='CkmD7'><fieldset id='CkmD7'></fieldset></dl></div>
                      <legend id='CkmD7'><style id='CkmD7'><dir id='CkmD7'><q id='CkmD7'></q></dir></style></legend><tfoot id='CkmD7'></tfoot>