在Doctrine2中获取实体代理

时间:2012-11-21 16:05:30

标签: doctrine-orm relationship proxy-classes

我有一个实体 Dog ,与 Collar 有OneToOne关系。

假设我创建了一个新的 Dog 实体,并且我想要与之关联的 Collar ID。不是 Collar 对象本身,只是它的ID号

$collar = 12;
$dog = new Dog();
$dog->setCollar(?);

我是否需要从数据库中实际获取 Collar 对象,仅设置它的ID(已经给出),或者是否有办法创建代理 Collar 对象?

1 个答案:

答案 0 :(得分:4)

是的,实际上是

您可以使用您的实体管理器获取代理参考,而不是实际的实体,它只是为您提供代表实体的代理对象,而不实际从数据库中提取它。

检查以下代码以获取示例

$collarId = 12;

// First param is the Entity classname, second is the Entity id
$collar = $entityManager->getReference('Collar', $collarId); 

$dog = new Dog();
$dog->setCollar($colar);

$entityManager->persist($dog);
$entityManager->flush();