我正在尝试在我的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
我试图从Doctrine跟随these instructions。
答案 0 :(得分:0)
请参阅:https://github.com/doctrine/doctrine2/issues/2482
我在github线程中没有看到任何解决方法,但他们确实提出了一个对我有用的替代方案:ResultSetMapping#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();
注意:这对我来说是临时修复;看起来他们自己的例子不起作用,或者需要一些缺失的东西,而且没有很好的记录。
答案 1 :(得分:-1)
如果您忘记了,请在脚本中添加此内容
use Doctrine\ORM\Query\ResultSetMapping;