2014-10-10 52 views
0

我們可以使用返回ArrayCollection類型的對象的getter函數來訪問多對多關係。 例如,爲了得到亞歷克斯的學生,我們可以撥打電話$alex->getStudens(),然後我可以訪問ale的學生對象。在symfony中訪問數組格式的多對多關係,symfony2

現在我的問題是我如何訪問亞歷克斯的學生ID的數組,例如通過調用$alex->getStudentsIds()它返回{1,5,7,12,..},這是他的學生的ID。

+0

瞭解你的最終遊戲可能比爲你提供一個'QueryBuilder'或一個返回所有這些東西的自定義方法更有幫助。學習對象關係映射功能非常強大,您可能試圖對查詢使用'IN'功能,其中'MEMBER OF'可能是更好的方法。 – sjagr 2014-10-10 14:40:55

回答

0

正是你怎麼寫的,你在實體添加其他功能

public function getStudentsIds() 
{ 
    $students = $this->students; 
    $studentIds = []; 

    foreach($students as $student) 
    { 
    $studentIds[] = $student->getId(); 
    } 

    return $studentIds; 
} 

理想的解決辦法是將這樣的方法添加到庫中,並有它的查詢只對學生ID爲給定的對象,但是這是儘可能簡單的解決方案。

+0

設置關係時也可以使用indexBy。在這種情況下,一個簡單的array_keys($ students)就可以做到這一點。 – Cerad 2014-10-10 15:01:09

+0

你可以舉一個你認爲更高效的查詢的例子嗎?謝謝:) – parisssss 2014-10-10 19:54:15

+0

$ repository-> createQueryBuilder('q') - > select('IDENTITY(q.students)') - > where('q =:yourObject') - > setParameter('yourObject',$ yourObject) – 2014-10-10 20:00:19