所以我有一个Alert表。我还有一张空房表。警报可以有一个或多个可用性。在我的可用性类中表示了这一点
/**
* @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)
}
}
那么这到底告诉我什么呢?我有权访问整个可用性实体和警报表的id?如果是这种情况,为什么它允许我从警报表中获取任何信息,例如
'Doctrine'Common'Util'Debug::dump($allAvailability[0][0]->getAvailabilityAlert()->getAlertStatus());
最后,在我上面查询的输出中,您可以看到元素0和1具有相同的id。这意味着它们是链接的。如果他们有相同的id,有什么方法可以组合他们吗?
感谢
在警报实体中,您有一个可用性警报object(实际上,您有"多对一"关系)
换句话说,当您加载警报对象时,您将加载一个具有与其关联的可用性警报是默认情况下完成的,您不需要查询它。
此外,如果您需要对数据库执行查询,您可以使用条令提供的一些"fetchings",如find、findAll,findBy和findOneBy(http://goo.gl/Cvve1i
)
请注意,那些查找选项不接受联接,但对于您的示例,您不需要它。