[英]Symfony2/Doctrine2 Understanding result of query
所以我有一个警报表。 我也有一个可用性表。 警报可以具有一个或多个可用性。 这在我的Availability类中由
/**
* @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链接到我的警报表中的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)
}
}
那么这到底是在告诉我什么呢? 我可以访问整个可用性实体和警报表的ID? 如果是这样,为什么它允许我从Alert表中获取任何信息,例如
\Doctrine\Common\Util\Debug::dump($allAvailability[0][0]->getAvailabilityAlert()->getAlertStatus());
最后,在上述查询的输出中,您可以看到元素0和1具有相同的ID。 这意味着它们已链接。 如果它们具有相同的ID,有什么方法可以合并它们?
谢谢
在您的警报实体中,您有一个AvailabilityAlert对象(实际上,您具有“多对多”关系);
换句话说,当您加载警报对象时,您将加载具有与其关联的AvailabilityAlert的数组。
默认情况下会完成此操作,您不需要查询。
另外,如果您需要在数据库上执行一个咨询,您可以使用学说提供了一些“fetchings”,像发现 , 的findAll,findBy和findOneBy( http://goo.gl/Cvve1i
)。
请注意,这些查找选项不接受join ,但是对于您的示例,您不需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.