Symfony3实体属性未通过OneTomany Association方法更新



我有以下类:

class Pedido
{
    /**
     * @var integer
     *
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @var DateTime
     *
     * @ORMColumn(name="fin", type="datetime", nullable=true)
     */
    private $fin;
    /** 
     * @ORMOneToMany(targetEntity="Estado", mappedBy="pedido", cascade={"persist","remove"})
     */
    protected $estados;
    public function addEstado(AppBundleEntityEstado $estado)
    {
        $estado->setPedido($this);
        $this->estados[] = $estado;
        $this->estado = $estado->getEstado();
        return $this;
    }
}

class Estado
{
    /**
     * @var integer
     *
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @var string
     *
     * @ORMColumn(name="estado", type="string", length=255)
     */
    private $estado;
    /** 
     * @ORMManyToOne(targetEntity="Pedido", inversedBy="estados")
     */
    protected $pedido;
}

但是当我打电话时:

$pedido = $em->getRepository('AppBundle:Pedido')->find(18);
$estado = new Estado;
$estado->setEstado('New Estado');
$pedido->addEstado($estado);
$em->flush();

新的estado实体持续正确,但是佩迪多与estado保持"旧estado"。

我已经倾倒了$ pedido pre pre and post flush and getestado返回"新estado",但在数据库中仍为"旧estado"。

奇怪的是,如果我打电话:

    $pedidos = $em->getRepository('AppBundle:Pedido')->findAll();
    foreach($pedidos as $pedido)
    {
        $estado = new Estado;
        $estado->setEstado('New Estado');
        $pedido->addEstado($estado);
    }
    $em->flush();

第一个$ pedido保留在estado"旧埃斯塔多"中,但所有其他人都成功地更改为"新Estado"。

有什么想法?

更新:

我有一种后代主义方法,该方法在estado =" caducado"呼叫上:

$pedido->setFin(new DateTime);

这就是使第一个$ pedido estado财产保持不变的原因,但找不到

的原因

更改:

$pedido->setFin(new DateTime);

从后代主义到预科主义者和解决问题,如果有人知道其背后的解释,请在下面添加。

相关内容

  • 没有找到相关文章

最新更新