我們可以使用返回ArrayCollection類型的對象的getter函數來訪問多對多關係。 例如,爲了得到亞歷克斯的學生,我們可以撥打電話$alex->getStudens()
,然後我可以訪問ale的學生對象。在symfony中訪問數組格式的多對多關係,symfony2
現在我的問題是我如何訪問亞歷克斯的學生ID的數組,例如通過調用$alex->getStudentsIds()
它返回{1,5,7,12,..},這是他的學生的ID。
我們可以使用返回ArrayCollection類型的對象的getter函數來訪問多對多關係。 例如,爲了得到亞歷克斯的學生,我們可以撥打電話$alex->getStudens()
,然後我可以訪問ale的學生對象。在symfony中訪問數組格式的多對多關係,symfony2
現在我的問題是我如何訪問亞歷克斯的學生ID的數組,例如通過調用$alex->getStudentsIds()
它返回{1,5,7,12,..},這是他的學生的ID。
正是你怎麼寫的,你在實體添加其他功能
public function getStudentsIds()
{
$students = $this->students;
$studentIds = [];
foreach($students as $student)
{
$studentIds[] = $student->getId();
}
return $studentIds;
}
理想的解決辦法是將這樣的方法添加到庫中,並有它的查詢只對學生ID爲給定的對象,但是這是儘可能簡單的解決方案。
設置關係時也可以使用indexBy。在這種情況下,一個簡單的array_keys($ students)就可以做到這一點。 – Cerad 2014-10-10 15:01:09
你可以舉一個你認爲更高效的查詢的例子嗎?謝謝:) – parisssss 2014-10-10 19:54:15
$ repository-> createQueryBuilder('q') - > select('IDENTITY(q.students)') - > where('q =:yourObject') - > setParameter('yourObject',$ yourObject) – 2014-10-10 20:00:19
瞭解你的最終遊戲可能比爲你提供一個'QueryBuilder'或一個返回所有這些東西的自定義方法更有幫助。學習對象關係映射功能非常強大,您可能試圖對查詢使用'IN'功能,其中'MEMBER OF'可能是更好的方法。 – sjagr 2014-10-10 14:40:55