[英]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.