0
我有以下類別:Symfony3實體屬性不被通過一對多關聯方法更新
class Pedido
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var \DateTime
*
* @ORM\Column(name="fin", type="datetime", nullable=true)
*/
private $fin;
/**
* @ORM\OneToMany(targetEntity="Estado", mappedBy="pedido", cascade={"persist","remove"})
*/
protected $estados;
public function addEstado(\AppBundle\Entity\Estado $estado)
{
$estado->setPedido($this);
$this->estados[] = $estado;
$this->estado = $estado->getEstado();
return $this;
}
}
class Estado
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="estado", type="string", length=255)
*/
private $estado;
/**
* @ORM\ManyToOne(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();
新埃斯塔實體正確地堅持着,但Pedido仍然有estado「舊的Estado」。
我傾倒了$ pedido pre和post flush,getEstado返回「New Estado」,但在數據庫中仍然是「Old Estado」。
奇怪的是,如果我稱之爲:
$pedidos = $em->getRepository('AppBundle:Pedido')->findAll();
foreach($pedidos as $pedido)
{
$estado = new Estado;
$estado->setEstado('New Estado');
$pedido->addEstado($estado);
}
$em->flush();
首先$ pedido仍然有埃斯塔「老埃斯塔」,但所有的人成功地得到改變,以「新國家體制」。
任何想法?
UPDATE:
我有上埃斯塔= 「Caducado」 調用PostPersist方法:
$pedido->setFin(new \DateTime);
這就是使得第一$ pedido埃斯塔屬性保持不變,但可以」找不到爲什麼