我有两个实体,DevolucionProveedor
和ArticuloDefectuoso
,它们与DevolucionProveedor
到ArticuloDefectuoso
之间存在关系OneToMany。
当我尝试创建一个新的DevolucionProveedor并尝试添加一个或多个实体ArticuloDefectuoso
时,这些实体不相关。
这是我的关系:
#ArticuloDefectuoso
/**
* @ORM\ManyToOne(targetEntity="CeiferIT\VentasAlmacenBundle\Entity\DevolucionProveedor", inversedBy="articulosDefectuosos")
* @ORM\JoinColumn(name="devolucionProveedor", referencedColumnName="id")
*/
protected $devolucionProveedor;
//Methods
/**
* Set devolucionProveedor
*
* @param \CeiferIT\VentasAlmacenBundle\Entity\DevolucionProveedor $devolucionProveedor
* @return ArticuloDefectuoso
*/
public function setDevolucionProveedor(\CeiferIT\VentasAlmacenBundle\Entity\DevolucionProveedor $devolucionProveedor = null)
{
$this->devolucionProveedor = $devolucionProveedor;
return $this;
}
/**
* Get devolucionProveedor
*
* @return \CeiferIT\VentasAlmacenBundle\Entity\DevolucionProveedor
*/
public function getDevolucionProveedor()
{
return $this->devolucionProveedor;
}
#DevolucionProveedor
/**
* @ORM\OneToMany(targetEntity="CeiferIT\VentasAlmacenBundle\Entity\ArticuloDefectuoso", mappedBy="devolucionProveedor", cascade={"persist", "remove"})
*/
protected $articulosDefectuosos;
public function __construct(){
$this->articulosDefectuosos = new \Doctrine\Common\Collections\ArrayCollection();
}
//methods
/**
* Add articulosDefectuosos
*
* @param \CeiferIT\VentasAlmacenBundle\Entity\ArticuloDefectuoso $articulosDefectuosos
* @return DevolucionProveedor
*/
public function addArticulosDefectuoso(\CeiferIT\VentasAlmacenBundle\Entity\ArticuloDefectuoso $articulosDefectuosos)
{
$articulosDefectuosos->setDevolucionProveedor($this);
$this->articulosDefectuosos[] = $articulosDefectuosos;
return $this;
}
/**
* Remove articulosDefectuosos
*
* @param \CeiferIT\VentasAlmacenBundle\Entity\ArticuloDefectuoso $articulosDefectuosos
*/
public function removeArticulosDefectuoso(\CeiferIT\VentasAlmacenBundle\Entity\ArticuloDefectuoso $articulosDefectuosos)
{
$this->articulosDefectuosos->removeElement($articulosDefectuosos);
}
/**
* Get articulosDefectuosos
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getArticulosDefectuosos()
{
return $this->articulosDefectuosos;
}
我的控制器:
public function nuevoAction(Request $request)
{
$em= $this->getDoctrine()->getManager();
$devolucionProveedor = new DevolucionProveedor();
$formulario = $this->createForm(new DevolucionProveedorType(), $devolucionProveedor, array(
'action' => $this->generateUrl('devolucionesProveedor_nuevo'),
'attr' => array(
'novalidate' => 'novalidate'
),
'method' => 'POST',
));
$formulario->handleRequest($request);
if($formulario->isValid()){
$this->get('session')->getFlashBag()->add(
'exito',
'Nueva devolucion anadida correctamente'
);
$em->persist($devolucionProveedor);
$em->flush();
return $this->redirect($this->generateUrl("devolucionesProveedor_index"));
}
return $this->render('VentasAlmacenBundle:DevolucionesProveedor:nuevo.html.twig', array(
"formulario" => $formulario->createView()
));
}
问题出在哪里?
答案 0 :(得分:1)
您必须在实体方面坚持实体才能使其发挥作用。在您的情况下,这意味着您必须在要添加的persist
上明确调用$articulosDefectuosos
。
查看the doctrine 2 documentation here了解详情。
忽略仅对关联的反面进行的更改。确保更新双向关联的两面(或至少从Doctrine的角度更新所有方)