本机查询中的Symfony原则未定义索引

本机查询中的Symfony原则未定义索引,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在尝试对FacebookEventResult实体执行本机查询,并创建与FacebookEvent实体的联接 FacebookEventResult中的相关映射: /** * @ORM\Column(type="integer", options={"unsigned":true}) * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\ManyToOne(targetEntit

我正在尝试对FacebookEventResult实体执行本机查询,并创建与FacebookEvent实体的联接

FacebookEventResult中的相关映射:

/**
 * @ORM\Column(type="integer", options={"unsigned":true})
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="FacebookEvent", inversedBy="facebookEventResults")
 * @ORM\JoinColumn(name="facebook_event_id", referencedColumnName="id", nullable=false)
 **/
protected $event;
FacebookEvent中的相关映射:

/**
 * @ORM\Column(type="integer", options={"unsigned":true})
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\OneToMany(targetEntity="FacebookEventResult", mappedBy="event")
 **/
protected $facebookEventResults;
我的查询代码:

$rsm = new ResultSetMapping();
$rsm->addEntityResult('AppBundle:FacebookEventResult', 'fer');
$rsm->addFieldResult('fer', 'id', 'id');
$rsm->addFieldResult('fer', 'event_date', 'eventDate');
// $rsm->addFieldResult('fer', 'facebook_event_id', 'event'); // this doesnt help
// some other mappings here as well, also tried without

$rsm->addJoinedEntityResult('AppBundle:FacebookEvent' , 'fe', 'fer', 'event');
$rsm->addFieldResult('fe', 'id', 'id');
// some other mappings here as well, also tried without

$sql = 'SELECT *
        FROM facebook_event_result fer
        INNER JOIN facebook_event fe ON fer.facebook_event_id = fe.id';

$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
return $query->getResult();
执行时,我得到以下错误:

注意:未定义索引:id


我已经试着遵循教义。

如果你忘记了,请在你的脚本中添加这个

use Doctrine\ORM\Query\ResultSetMapping;
见:

我在github线程中没有看到任何解决方案,但他们确实提出了一个对我有效的替代方案:
resultsmapping\addScalarResult($columnName,$alias)

因此,类似这样的方法应该会奏效:

$rsm = new ResultSetMapping();
$rsm->addScalarResult('id', 'id');
$rsm->addScalarResult('event_date', 'eventDate');

$sql = 'SELECT *
    FROM facebook_event_result fer
    INNER JOIN facebook_event fe ON fer.facebook_event_id = fe.id';

$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
return $query->getResult();


注意:这对我来说是一个暂时的解决方案;他们自己的示例似乎不起作用,或者需要缺少某些内容,并且没有很好的文档记录。

我认为您需要在select语句中指定要检索的所有列字段。请告诉我具体错误。请把你的错误写在这里,以便回答。我用另一种方法解决了这个问题,我不再有这个代码来再次测试它了?这是如何回答问题的?这与问题完全无关。如果你有一个真正的建议如何解决这个问题,那么请修改你的答案,我将很高兴改变我的投票。