我的Offer
和OfferObject
实体之间有一个 ManyToOne 连接(一个产品/服务可以有多个 offerObjects(:
提供
/**
* @ORMOneToMany(targetEntity="AppBundleEntityOfferObject", mappedBy="offer")
*/
protected $offerObject;
报价对象
/**
* @ORMManyToOne(targetEntity="AppBundleEntityOffer, inversedBy="offerObject")
*/
protected $offer;
现在我创建一个报价:
/* Create New Offer */
$offer = new Offer();
....
$em->persist($offer);
我立即添加像这样的 OfferObjects:
foreach ($request->get('products') as $product) {
$oo = new OfferObject();
$oo->setOffer($offer);
....
$em->persist($oo);
}
最后我冲洗它们:
try {
$em->flush();
} catch (Exception $e) {
....
}
Everthing按预期保存在数据库中,但是当我在flush
后立即执行此操作时,它什么也没显示:
foreach($offer->getOfferObject() as $ob){
echo $ob->getPrice()."<br />";
}
在"显示"之前,我还需要执行其他操作吗?//编辑 如果我手动查找数据库中的最后一个 ID(在本例中为 16(,它会按预期工作。
$offerFromDB = $em->getRepository('AppBundle:Offer')->find(16);
foreach($offerFromDB->getOfferObject() as $ob){
echo $ob->getPrice()."<br />";
}
你必须通过从数据库中
id
来获取新的Offer
对象。或者简单地更改您的代码,如下所示:
foreach ($request->get('products') as $product) {
$oo = new OfferObject();
$oo->setOffer($offer);
....
$em->persist($oo);
$offer->addOfferObject($oo);
}