0
ロジックのある時点でPurchaseOrderを作成し、PurchaseOrderテーブルにRequestIdを挿入する必要があるRequestForEstimateエンティティがあります。私はそれを教義に1対1の関連を使って参照しています。何らかの理由でDB呼び出しが成功しましたが、テーブルをチェックすると、request_estimate_idフィールドがnullであるように見えます。ここに私のロジックは次のとおりです。Doctrineは1対1の参照フィールドを保存しません
RequestForEstimateエンティティ:
<?php
namespace InboundBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* RequestForEstimate
*
* @ORM\Table(name="request_for_estimate")
* @ORM\Entity(repositoryClass="InboundBundle\Repository\RequestForEstimateRepository")
*/
class RequestForEstimate
{
/**
* @var int
*
* @ORM\Column(name="request_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="create_time", type="datetime")
*/
private $createTime;
/**
* @var \DateTime
*
* @ORM\Column(name="update_time", type="datetime")
*/
private $updateTime;
/**
* @ORM\ManyToOne(targetEntity="RequestStatus", cascade={"persist"})
*/
private $status;
/**
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\Product")
* @ORM\JoinColumn(name="product_id", referencedColumnName="product_id")
*/
private $product;
/**
* @var int
*
* @ORM\Column(name="quantity", type="integer")
*/
private $quantity = 0;
/**
* @var string
*
* @ORM\Column(name="price_per_unit", type="decimal", precision=10, scale=2)
*/
private $pricePerUnit = 0;
/**
* @var string
*
* @ORM\Column(name="shipping_cost", type="decimal", precision=10, scale=2)
*/
private $shippingCost = 0;
/**
* @var string
*
* @ORM\Column(name="package_cost", type="decimal", precision=10, scale=2)
*/
private $packageCost = 0;
/**
* @var string
*
* @ORM\Column(name="other_fees", type="decimal", precision=10, scale=2)
*/
private $otherFees = 0;
/**
* @var integer
*
* @ORM\Column(name="deposit_required", type="integer")
*/
private $depositRequired = 0;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set product
*
* @param integer $product
*
* @return RequestForEstimate
*/
public function setProduct($product)
{
$this->product = $product;
return $this;
}
/**
* Get product
*
* @return int
*/
public function getProduct()
{
return $this->product;
}
/**
* Set quantity
*
* @param integer $quantity
*
* @return RequestForEstimate
*/
public function setQuantity($quantity)
{
$this->quantity = $quantity;
return $this;
}
/**
* Get quantity
*
* @return int
*/
public function getQuantity()
{
return $this->quantity;
}
/**
* Set pricePerUnit
*
* @param string $pricePerUnit
*
* @return RequestForEstimate
*/
public function setPricePerUnit($pricePerUnit)
{
$this->pricePerUnit = $pricePerUnit;
return $this;
}
/**
* Get pricePerUnit
*
* @return string
*/
public function getPricePerUnit()
{
return $this->pricePerUnit;
}
/**
* Set shippingCost
*
* @param string $shippingCost
*
* @return RequestForEstimate
*/
public function setShippingCost($shippingCost)
{
$this->shippingCost = $shippingCost;
return $this;
}
/**
* Get shippingCost
*
* @return string
*/
public function getShippingCost()
{
return $this->shippingCost;
}
/**
* Set otherFees
*
* @param string $otherFees
*
* @return RequestForEstimate
*/
public function setOtherFees($otherFees)
{
$this->otherFees = $otherFees;
return $this;
}
/**
* Get otherFees
*
* @return string
*/
public function getOtherFees()
{
return $this->otherFees;
}
/**
* Set requestId
*
* @param \InboundBundle\Entity\RequestForEstimate $requestId
*
* @return RequestForEstimate
*/
public function setRequestId(\InboundBundle\Entity\RequestForEstimate $requestId = null)
{
$this->requestId = $requestId;
return $this;
}
/**
* Get requestId
*
* @return \InboundBundle\Entity\RequestForEstimate
*/
public function getRequestId()
{
return $this->requestId;
}
/**
* Set productId
*
* @param \InboundBundle\Entity\Product $productId
*
* @return RequestForEstimate
*/
public function setProductId(\InboundBundle\Entity\Product $productId = null)
{
$this->productId = $productId;
return $this;
}
/**
* Get productId
*
* @return \InboundBundle\Entity\Product
*/
public function getProductId()
{
return $this->productId;
}
/**
* Constructor
*/
public function __construct()
{
}
/**
* Set depositRequired
*
* @param string $depositRequired
*
* @return RequestForEstimate
*/
public function setDepositRequired($depositRequired)
{
$this->depositRequired = $depositRequired;
return $this;
}
/**
* Get depositRequired
*
* @return string
*/
public function getDepositRequired()
{
return $this->depositRequired;
}
/**
* Set packageCost
*
* @param string $packageCost
*
* @return RequestForEstimate
*/
public function setPackageCost($packageCost)
{
$this->packageCost = $packageCost;
return $this;
}
/**
* Get packageCost
*
* @return string
*/
public function getPackageCost()
{
return $this->packageCost;
}
/**
* Set status
*
* @param \InboundBundle\Entity\RequestStatus $status
*
* @return RequestForEstimate
*/
public function setStatus(\InboundBundle\Entity\RequestStatus $status = null)
{
$this->status = $status;
return $this;
}
/**
* Get status
*
* @return \InboundBundle\Entity\RequestStatus
*/
public function getStatus()
{
return $this->status;
}
/**
* Set createTime
*
* @param \DateTime $createTime
*
* @return RequestForEstimate
*/
public function setCreateTime($createTime)
{
$this->createTime = $createTime;
return $this;
}
/**
* Get createTime
*
* @return \DateTime
*/
public function getCreateTime()
{
return $this->createTime;
}
/**
* Set updateTime
*
* @param \DateTime $updateTime
*
* @return RequestForEstimate
*/
public function setUpdateTime($updateTime)
{
$this->updateTime = $updateTime;
return $this;
}
/**
* Get updateTime
*
* @return \DateTime
*/
public function getUpdateTime()
{
return $this->updateTime;
}
}
発注書エンティティ:
<?php
namespace InboundBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* PurchaseOrder
*
* @ORM\Table(name="purchase_order")
* @ORM\Entity(repositoryClass="InboundBundle\Repository\PurchaseOrderRepository")
*/
class PurchaseOrder
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="RequestForEstimate", cascade={"persist"})
* @ORM\JoinColumn(name="request_estimate_id", referencedColumnName="request_id")
*/
private $requestId;
/**
* @var \DateTime
*
* @ORM\Column(name="create_time", type="datetime")
*/
private $createTime;
/**
* @var \DateTime
*
* @ORM\Column(name="update_time", type="datetime")
*/
private $updateTime;
/**
* @var int
*
* @ORM\Column(name="status", type="integer")
*/
private $status;
/**
* @var \DateTime
*
* @ORM\Column(name="ship_date", type="date", nullable=true)
*/
private $shipDate;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set createTime
*
* @param \DateTime $createTime
*
* @return PurchaseOrder
*/
public function setCreateTime($createTime)
{
$this->createTime = $createTime;
return $this;
}
/**
* Get createTime
*
* @return \DateTime
*/
public function getCreateTime()
{
return $this->createTime;
}
/**
* Set updateTime
*
* @param \DateTime $updateTime
*
* @return PurchaseOrder
*/
public function setUpdateTime($updateTime)
{
$this->updateTime = $updateTime;
return $this;
}
/**
* Get updateTime
*
* @return \DateTime
*/
public function getUpdateTime()
{
return $this->updateTime;
}
/**
* Set status
*
* @param integer $status
*
* @return PurchaseOrder
*/
public function setStatus($status)
{
$this->status = $status;
return $this;
}
/**
* Get status
*
* @return int
*/
public function getStatus()
{
return $this->status;
}
/**
* Set shipDate
*
* @param \DateTime $shipDate
*
* @return PurchaseOrder
*/
public function setShipDate($shipDate)
{
$this->shipDate = $shipDate;
return $this;
}
/**
* Get shipDate
*
* @return \DateTime
*/
public function getShipDate()
{
return $this->shipDate;
}
/**
* Set requestForEstimate
*
* @param \InboundBundle\Entity\RequestForEstimate $requestForEstimate
*
* @return PurchaseOrder
*/
public function setRequestForEstimate(\InboundBundle\Entity\RequestForEstimate $requestForEstimate = null)
{
$this->requestForEstimate = $requestForEstimate;
return $this;
}
/**
* Get requestForEstimate
*
* @return \InboundBundle\Entity\RequestForEstimate
*/
public function getRequestForEstimate()
{
return $this->requestForEstimate;
}
/**
* Set requestId
*
* @param $requestId
*
* @return PurchaseOrder
*/
public function setRequestId($requestId)
{
$this->request_id = $requestId;
return $this;
}
/**
* Get requestId
*
* @return \InboundBundle\Entity\RequestForEstimate
*/
public function getRequestId()
{
return $this->request_id;
}
}
マイコントローラ:
/**
* @Route("request-for-estimate/confirm/{id}", name="request_confirm")
*/
public function confirmRequest(RequestForEstimate $RequestForEstimate)
{
$repo = $this->getDoctrine()->getRepository('InboundBundle:RequestStatus');
$status = $repo->findOneById('6');
$RequestForEstimate->setupdateTime(new \DateTime());
$RequestForEstimate->setstatus($status);
$PurchaseOrder = new PurchaseOrder();
$PurchaseOrder->setRequestId($RequestForEstimate);
$PurchaseOrder->setupdateTime(new \DateTime());
$PurchaseOrder->setcreateTime(new \DateTime());
$PurchaseOrder->setstatus(1);
$em1 = $this->getDoctrine()->getManager();
$em1->persist($PurchaseOrder);
$em1->flush();
$em = $this->getDoctrine()->getManager();
$em->persist($RequestForEstimate);
$em->flush();
return $this->redirectToRoute('requests_for_estimate_view');
}
美しいです!どうもありがとう! – user1029829