2014-10-10 95 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