所以我有一张警报表。我还有一张可用性表。警报可以具有一个或多个可用性。这在我的可用性类中由
表示/**
* @var \Nick\AlertBundle\Entity\Alert
*
* @ORM\ManyToOne(targetEntity="Nick\AlertBundle\Entity\Alert")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="availability_alert_id", referencedColumnName="id")
* })
*/
private $availabilityAlert;
所以availabilityAlert链接到Alert表中的id字段。所以我运行一个基本上将这两个表连接在一起的查询(或者我认为)
public function getAlertAvailability()
{
return $this->getEntityManager()
->createQuery(
'SELECT a, u.id
FROM NickAlertBundle:Availability a
JOIN a.availabilityAlert u
WHERE u.id = a.availabilityAlert
ORDER BY a.classLetter, a.lastUpdated'
)
->getResult();
}
现在,如果我输出结果,我基本上得到
array(3) {
[0]=> array(2) {
[0]=> string(37) "Nick\AlertBundle\Entity\Availability"
["id"]=> int(5)
}
[1]=> array(2) {
[0]=> string(37) "Nick\AlertBundle\Entity\Availability"
["id"]=> int(5)
}
[2]=> array(2) {
[0]=> string(37) "Nick\AlertBundle\Entity\Availability"
["id"]=> int(6)
}
}
那究竟是什么告诉我的?我可以访问整个可用实体和Alert表的ID吗?如果是这种情况,为什么它允许我从Alert表中获取任何内容,例如
\Doctrine\Common\Util\Debug::dump($allAvailability[0][0]->getAvailabilityAlert()->getAlertStatus());
最后,在我上面查询的输出中,您可以看到元素0和1具有相同的ID。这意味着它们是相互关联的如果它们具有相同的ID,有没有办法将它们组合起来?
由于
答案 0 :(得分:1)
在 alert 实体中,您有一个 availabilityAlert 对象(实际上,您有“多对一”关系);
换句话说,当您加载 alert 对象时,您将加载一个与其关联的 availabilityAlert 的数组。
这是默认情况下完成的,您不需要查询它
此外,如果您需要在数据库上执行咨询,您可以使用doctrine提供的一些“ fetchings ”,例如 find , findAll ,< em> findBy 和 findOneBy (http://goo.gl/Cvve1i
)。
请注意,那些查找选项不接受加入,但对于您的示例,您不需要它。