簡體   English   中英

Symfony2 / Doctrine2了解查詢結果

[英]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,findByfindOneBy( http://goo.gl/Cvve1i )。
請注意,這些查找選項不接受join ,但是對於您的示例,您不需要它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM