我在自定义存储库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)。无论您是否要在其他任何地方使用它。

10-05 22:45