即使我添加addMetaResult映射,Doctrine Native Query也不会加载相关实体

时间:2016-06-25 10:13:24

标签: doctrine-orm

我有两张桌子:

users - id, firstName, lastName
posts - id, title, content, user_id

我尝试使用原生查询加载实体:

$rsm = new ResultSetMapping;
$rsm->addEntityResult('Entity\Post', 'p');
$rsm->addFieldResult('p', 'id', 'id');
$rsm->addFieldResult('p', 'title', 'title');
$rsm->addMetaResult('p', 'user_id', 'user_id');
$sql = 'select p.id, p.title, p.user_id from posts p';
$query = $em->createNativeQuery($sql, $rsm);    
$posts = $query->getResult();

主义加载"发布"实体,并填写"用户"关系,但"用户"的所有属性;实体为NULL。为什么它没有加载"用户"具有代理对象的实体?对于" addMetaResult"存在?

1 个答案:

答案 0 :(得分:0)

实际上,如果您在" User"上调用get_class,那么您将看到它是一个学说代理。所有属性都为空,因为未加载代理。呼叫" getter"属性和教义之一上的方法(例如getFirstName())将加载类并填充所有其他属性。