我有一个文档Person,被文档User引用。当我获取User时,它没有嵌入一个完整的Person对象,而是一个Person代理对象。有没有一种方法可以“强制”代理变成一个“完整”的文档(所以Person代理 => Person)。
我已经尝试调用一个方法来检索额外的数据(所以__load被触发),但对象仍然是“代理”版本。
我希望有人比ODM的文档更能够解释这个问题。
我有一个文档Person,被文档User引用。当我获取User时,它没有嵌入一个完整的Person对象,而是一个Person代理对象。有没有一种方法可以“强制”代理变成一个“完整”的文档(所以Person代理 => Person)。
我已经尝试调用一个方法来检索额外的数据(所以__load被触发),但对象仍然是“代理”版本。
我希望有人比ODM的文档更能够解释这个问题。
/** @Document */
class User
{
/** @ReferenceOne(targetDocument="Person") */
private $person;
}
/** @Document */
class Person
{
// ...
}
/* @var $user User */
$user = $dm->createQueryBuilder('User')
->field('person')->prime(true)
->getQuery()
->getSingleResult();
serialize()
方法。prime()
或者使用单独的查询指定hydrate(false)
去获取它。$user = $dm->createQueryBuilder('Person')
->field('_id')->equals($user->getPerson()->getId())
->hydrate(false)