【发布时间】:2017-09-01 09:17:03
【问题描述】:
每当我保存新的子行时,我是否必须手动检查父 ID 是否确实存在?我原以为 symfony/doctrine 会自动检查并会抛出一个错误,因为因为 OneToMany 定义。
例子:
主要实体(“一”):
class Order
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="OrderPayment", mappedBy="orderId")
*/
private $orderPayments;
public function __construct()
{
$this->orderPayments = new ArrayCollection();
}
}
子实体(“许多”):
class OrderPayment
{
/**
* @ORM\ManyToOne(targetEntity="Order", inversedBy="orderPayments")
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
*/
private $orderId;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
}
每当我向数据库中插入新的 OrderPayment 行时,Symfony 不应该检查 $orderId 是否确实存在于数据库中,还是我需要手动检查?
【问题讨论】:
-
您可以将您的订单实体本身传递给 OrderPayment 构造函数。这将确保您没有放弃 OrderPayments。
-
你能解释一下吗?简单地添加一个传递 Order 的构造函数对我来说没有任何改变。
标签: php symfony doctrine-orm