的原因
我有以下类:
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);
从后代主义到预科主义者和解决问题,如果有人知道其背后的解释,请在下面添加。