在CASCADE模式下克隆实体

时间:2015-02-21 19:00:01

标签: php symfony doctrine-orm clone

我需要通过一些参数在DB中找到一个对象,让我们以ID为例然后我有这个实体:

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use AppBundle\Model\IdentifierAutogeneratedEntityTrait;
use DateTime;

/**
 * @ORM\Entity
 * @ORM\Table(name="negocio.solicitud_usuario", schema="negocio")
 * @ORM\Entity(repositoryClass="AppBundle\Entity\Repository\SolicitudUsuarioRepository")
 */
class SolicitudUsuario
{
    use IdentifierAutogeneratedEntityTrait;

    /**
     * @ORM\ManyToOne(targetEntity="SolicitudUsuario", cascade={"persist", "remove"})
     * @ORM\JoinColumn(name="padre_id", referencedColumnName="id")
     */
    protected $padre;

    /**
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="ProductoSolicitud", mappedBy="solicitud_usuario")
     */
    protected $producto_solicitud;

    /**
    * @var ArrayCollection
    * @ORM\OneToMany(targetEntity="Constancia", mappedBy="solicitud_usuario")
    */
    protected $constancias;


    /**
     * @ORM\ManyToOne(targetEntity="Usuario", cascade={"persist"})
     * @ORM\JoinColumn(name="usuario_id", referencedColumnName="id")
     */
    protected $usuario;

    /**
     * @ORM\ManyToOne(targetEntity="TipoTramite", cascade={"persist"})
     * @ORM\JoinColumn(name="tipo_tramite_id", referencedColumnName="id")
     */
    protected $tipo_tramite;

    /**
     * @ORM\Column(name="fecha_creacion", type="datetime", nullable=false)
     */
    protected $fecha_creacion;

    /**
     * @ORM\ManyToOne(targetEntity="TipoRegistro", cascade={"persist"})
     * @ORM\JoinColumn(name="tipo_registro_id", referencedColumnName="id")
     */
    protected $tipo_registro;

    /**
     * @ORM\ManyToOne(targetEntity="EstadoSolicitud", cascade={"persist"})
     * @ORM\JoinColumn(name="estado_solicitud_id", referencedColumnName="id")
     */
    protected $estado_solicitud;

    /**
     * @ORM\Column(name="diferencia_pago", type="decimal", precision=6, scale=2, nullable=false)
     */
    protected $diferencia_pago;

    /**
     * @ORM\ManyToOne(targetEntity="OficinaRegional", cascade={"persist"})
     * @ORM\JoinColumn(name="oficina_regional_id", referencedColumnName="id", nullable=true)
     */
    protected $oficina_regional;   
}

您可能已经注意到该实体有很多关系,并且相关实体也有其他关系等等。如何找到SolicitudUsuario我克隆当前记录保持完整性的对象?看一下这个例子:

  • 按ID = 1
  • 查找SolicitudUsuario
  • 找到记录
    • 将当前的SolicitudUSuario实体及其所有相关实体克隆到新实体。
    • 新记录将有padre=1

有什么建议吗?很明显我想要实现什么目标?

0 个答案:

没有答案