如果我只有“One”的id,我该如何保存Many to One的“Many”一面?

时间:2013-01-20 16:34:25

标签: symfony doctrine-orm

假设我有两个具有一对多关系的实体。称他们为EntityOne和EntityMany。

我想将EntityMany保存到数据库中。 我没有EntityOne的实例,但我知道所需的entity_one_id。

有没有办法在不从db中检索EntityOne实例的情况下保存EntityMany?

我不想对保存的EntityMany做任何事情。我只是想保存它。

在这种情况下,我能够保存EntityMany的唯一方法是从数据库中检索EntityOne,执行$ entity_many-> setEntityOne($ entity_one),然后保留EntityMany。

这有效,但当所有数据库需求都是id时,它似乎是对EntityOne的不必要的查询。

我尝试简单地实例化一个新的EntityOne()并设置id(我必须为自动生成的整数id添加一个setter),然后使用那个未保存的实例,但是Doctrine对几个错误不满意。

1 个答案:

答案 0 :(得分:1)

EntityManager有一个方法“getReference” - 你可以用它来实现你的目标。看起来应该是这样的:

$entityRef = $em->getReference('EntityOne', $entityOneId);
$entityMany->setEntityOne($entityRef);
// ...

看这里:

http://docs.doctrine-project.org/en/latest/reference/configuration.html#proxy-objects