我被我的關係困住了。Doctrine JoinColumn id爲空
這裏是我的實體:
class Orderproduct
/**
* @ORM\OneToMany(targetEntity="ProductBundle\Entity\Product", mappedBy="orderproduct", cascade={"persist"})
*/
private $product;
/**
* @ORM\OneToMany(targetEntity="ProductBundle\Entity\Machining", mappedBy="orderproduct", cascade={"persist"})
*/
private $machining;
和我的兩個其他實體:
class Product
/**
* @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Orderproduct", inversedBy="product")
* @ORM\JoinColumn(name="orderproduct_id", referencedColumnName="id", nullable=false)
*/
private $orderproduct;
class Machining
/**
* @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Orderproduct", inversedBy="machining")
* @ORM\JoinColumn(name="orderproduct_id", referencedColumnName="id", nullable=false)
*/
private $orderproduct;
而且我得到這個錯誤:
SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'orderproduct_id' ne peut être vide (null)
這裏是我的簡單的附加功能
public function addOrderproductAction(Request $request)
{
$orderproduct = new Orderproduct();
$formorderproduct = $this->createForm(OrderproductType::class, $orderproduct);
if($formorderproduct->handleRequest($request)->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($orderproduct);
$em->flush();
return $this->redirect($this->generateUrl('product_bundle_listorderproduct'));
}
return $this->render('ProductBundle:Default:neworderproduct.html.twig', array(
'formorderproduct' => $formorderproduct->createView(),
));
}
任何想法?
Thx爲您的幫助!
編輯:把$ product-> getOrderproduct($ this)和$ machining-> getOrderproduct($ this)後。
編輯:
我改變了我的模型,但仍然有同樣的問題。所以,我有產品和加工
產品
/**
* @ORM\OneToMany(targetEntity="ProductBundle\Entity\Machining", mappedBy="product", cascade={"persist"})
*/
private $machining;
加工
/**
* @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Product", inversedBy="machining")
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
*/
private $product;
我已經嘗試修改加工中的setProduct,但它仍然是一樣的。
嘗試在沖洗前堅持所有實體。有時它需要先刷新相關的實體...所以它會有id(cascade persist可以解決這個問題) –
我試過這個'$ em = $ this-> getDoctrine() - > getManager(); $ em-> persist($ orderproduct); $ em-> flush(); ' – Wako
也沒有代碼,它很難調試它...至少複製你設置關係的部分,堅持並沖洗 –