Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令2坚持只保存标题对象为什么?_Php_Doctrine_Entity_Persistence_Symfony 3.1 - Fatal编程技术网

Php 条令2坚持只保存标题对象为什么?

Php 条令2坚持只保存标题对象为什么?,php,doctrine,entity,persistence,symfony-3.1,Php,Doctrine,Entity,Persistence,Symfony 3.1,我想用采购订单详细信息保存采购订单标题。这是我的PurchaseOrder实体类=> namespace AppBundle\Entity; use AppBundle\Entity\PurchaseInvoiceDetail; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; /** * PurchaseOrder * * @ORM\Table(name="purch

我想用采购订单详细信息保存采购订单标题。这是我的PurchaseOrder实体类=>

 namespace AppBundle\Entity;

 use AppBundle\Entity\PurchaseInvoiceDetail;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\ORM\Mapping as ORM;


/**
* PurchaseOrder
*
* @ORM\Table(name="purchase_order", indexes={@ORM\Index(name="fk_purchase_order_supplier1_idx", columns={"supplier_id"})})
* @ORM\Entity
*/
class PurchaseOrder
{
/**
 * @var PurchaseOrderDetails
 *
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\PurchaseOrderDetails", mappedBy="purchaseOrder",cascade={"cascade"})
 * @JMS\Type("ArrayCollection<FinanceBundle\Entity\AutoAllocation>")
 */
private $purchaseOrderDetails;


public function __construct()
{
    $this->purchaseOrderDetails = new ArrayCollection();
}

public function addPurchaseOrderDetail(PurchaseOrderDetails $purchaseOrderDetails)
{
    $this->purchaseOrderDetails->add($purchaseOrderDetails);
}

/**
 * @return PurchaseOrderDetails
 */
public function getPurchaseOrderDetails()
{
    return $this->purchaseOrderDetails;
}

/**
 * @param PurchaseOrderDetails $purchaseOrderDetails
 */
public function setPurchaseOrderDetails($purchaseOrderDetails)
{
    $this->purchaseOrderDetails = $purchaseOrderDetails;
}

}

没有发生错误,只有采购订单已持久化,采购订单详细信息不持久化您没有持久化详细信息对象。或者使用

$em->persist($purchaseOrderDetail);
或修复

cascade={"persist"}

PurchaseOrder::$purchaseOrderDetails的
@ORM\OneToMany
注释中(
cascade={“cascade”}
可能是一个打字错误)。

您还需要
保存
purchaseOrderDetails

下面的代码应该保存这两个实体

$em = $this->getDoctrine()->getManager();
$purchaseOrder = new PurchaseOrder();
$puchaseOrderDetail = new PurchaseOrderDetails();
$puchaseOrderDetail->setPrice(100);
$purchaseOrder->setPurchaseOrderDetails($puchaseOrderDetail);
$puchaseOrderDetail->setPurchaseOrder($purchaseOrder);
$em->persist($purchaseOrder);
$em->persist($puchaseOrderDetail);
$em->flush();
正如@Finwe所提到的,如果您的业务逻辑需要,并且您不想在创建新的
PurchaseOrder
时单独
PurchaseOrderDetails
实体。您可以考虑配置<代码> CASCADEDIONE 。将自动保留关联实体

为此,请将级联选项添加到关联配置中:

@ORM\OneToMany(targetEntity="AppBundle\Entity\PurchaseOrderDetails", mappedBy="purchaseOrder",cascade={"persist"})

我可以看出我已经用这个问题的第一个代码框架做了,伙计,但不是working@Sameera你做了什么,老兄?如果你的意思是级联持续,那你就错了(cascade=cascade vs cascade=persist)我可以看出我已经在这个问题的第一个代码框架中完成了,但是没有工作你已经按照
cascade={“cascade”}
的方式完成了。我想,您应该使用
cascade={“persist”}
将新数据级联到子级,就像它发生在父级一样。您可以使用
cascade={“all”}
来处理所有(插入、更新和删除)。请看一看,看看它是否有效!
$em = $this->getDoctrine()->getManager();
$purchaseOrder = new PurchaseOrder();
$puchaseOrderDetail = new PurchaseOrderDetails();
$puchaseOrderDetail->setPrice(100);
$purchaseOrder->setPurchaseOrderDetails($puchaseOrderDetail);
$puchaseOrderDetail->setPurchaseOrder($purchaseOrder);
$em->persist($purchaseOrder);
$em->persist($puchaseOrderDetail);
$em->flush();
@ORM\OneToMany(targetEntity="AppBundle\Entity\PurchaseOrderDetails", mappedBy="purchaseOrder",cascade={"persist"})