添加联接关系后,不保存列的原则

时间:2016-03-25 19:40:28

标签: php doctrine

我正在使用教条,我在实体中添加了一个连接。在连接之后,当数据保存到数据库时,不再保存setter(setcustomerorderID)。每个其他列都会保存。加入是正确的,并设置了$ this-> data-> orderId。

代码在没有连接的情况下工作。

我添加了如下关系:

/**
 * @var orders
 *
 * @ORM\ManyToOne(targetEntity="FYP\CartBundle\Entity\Orders", inversedBy="CustomerDesign")
 * @ORM\JoinColumn(name="customerorder_id", referencedColumnName="orderID")
 */
private $orders;

反面:

/**
 * @var customerDesign
 *
 * @ORM\OneToMany(targetEntity="FYP\BaseDesignBundle\Entity\CustomerDesign", mappedBy="orders")
 */
private $customerDesign;

尝试在另一个文件中设置customerorder_id。

 $cd = new CustomerDesign();
 $cd->setcustomerID($this->data->customerId);
 $cd->setcustomerorderID($this->data->orderId); 
 $cd->setQuantity($cartItem->getQuantity());
 $cd->setProductVariant($cartItem->getProductVariant());
 $cd->setDesignData($cartItem->getDesignData());
 $cd->setRequestProof($cartItem->getRequestProof());
 $cd->setComments($cartItem->getComments());
 $cd->setSpecialComments($cartItem->getSpecialComments());
 $cd->setgiftSetID($cartItem->getgiftSetID());
 $cd->setgiftSetParent($cartItem->getgiftSetParent());
 $cd->setisBlank($cartItem->getisBlank());
 $cd->setbasedOn($cartItem->getbasedOn());
 $cd->setApprovalData($cartItem->getApprovalData());
 $cd->setdesignName('');
 $this->em->persist($cd);
 $this->em->flush();

这$ cd-> setcustomerorderID($ this-> data-> orderId);根本不工作。

setcustomerorderID看起来像:

    /**
 * Set customerorder_id
 *
 * @param integer $customerorder_id
 */
public function setcustomerorderID($customerorder_id)
{
    $this->customerorder_id = $customerorder_id;
}

感谢。

1 个答案:

答案 0 :(得分:0)

在此处更改您的代码:

/**
 * @var order
 *
 * @ORM\ManyToOne(targetEntity="FYP\CartBundle\Entity\Orders", inversedBy="CustomerDesign")
 * @ORM\JoinColumn(name="customerorder_id", referencedColumnName="orderID")
 */
private $order;

据我了解,根据您的关系,您可能会为许多客户设计订购一份订单。

而不是ID,您需要分配实体。

详细信息可以在Doctrine文档中找到。

<?php
$order = new Order();
$design = new CustomerDesign();
$design->setOrder($order);
...



public function setOrder($order)
{
    $this->order = $order;
}
...

$this->em->persist($order);
$this->em->persist($design);
$this->em->flush();

您创建了关系,这意味着customerorder_id受ORM控制。