我在自定义存储库symfony 2类中有这段代码,我很难理解为什么$ results始终为空。MyApplicationBundle:Archive是映射到DBcollection的实体类是一个联接表(ManyToMany),不是现存的不是此类的一个属性,但是我需要在result $ where_str上面构建它,这是我做错了吗?谢谢
$rsm = new ResultSetMapping();
$rsm->addEntityResult('MyApplicationBundle:Archive', 'a');
$rsm->addFieldResult('a', 'id', 'id');
$rsm->addFieldResult('a', 'author', 'author');
$rsm->addFieldResult('a', 'title', 'title');
$rsm->addFieldResult('a', 'present', 'present');
$sql = "select
a.id,
a.author,
a.title,
IF((select c.archive_id from collection c where c.archive_id = a.id and c.user_id = :user),1,0) as present
from
archive a
where
$where_str";
$em = $this->getEntityManager();
$query = $em->createNativeQuery($sql, $rsm);
$query->setParameters($arrParameters);
$results = $query->getResult();
return $results;
如果更好,尝试使用DQL或DQB非常高兴。
最佳答案
经过一番尝试,我发现上面的代码是正确的。我只需要在Archive实体中添加字段“ present”,创建getter和setter(doctrine:generate:entities),并更新数据库以在表中创建该字段(doctrine:schema:update --force)。无论您是否要在其他任何地方使用它。