如何使用Symfony2从数据库中检索子记录?

如何使用Symfony2从数据库中检索子记录?,symfony,doctrine,Symfony,Doctrine,我有两个表,一个是map\u families表,一个是map\u contacts表。这两个表之间存在一对多关系,当显示族记录时,我希望显示它从map\u contacts表中拥有的所有子记录 但目前,我有以下代码: $familylist = $dm->createQuery(' SELECT mf.id, mf.surname, mf.firstName, mf.email, mf.phone, mc.id AS memID, mc.firstName

我有两个表,一个是
map\u families
表,一个是
map\u contacts
表。这两个表之间存在一对多关系,当显示族记录时,我希望显示它从
map\u contacts
表中拥有的所有子记录

但目前,我有以下代码:

        $familylist = $dm->createQuery('
        SELECT mf.id, mf.surname, mf.firstName, mf.email, mf.phone, mc.id AS memID, mc.firstName AS memFirstName, mc.surname AS memSurname
        FROM MyBundle:MapFamilies mf
        LEFT JOIN MyBundle:MapContacts mc WHERE mf.id = mc.family
        WHERE mf.centre = :centre
        ORDER BY mf.surname ASC, mf.firstName ASC'
        )->setParameter('centre', $centre);

        $famlist = $familylist->getResult();
这将得到以下结果:

Array
(
    [0] => Array
        (
            [id] => 4
            [surname] => Kentucky
            [firstName] => John
            [email] => email@somewhere.com
            [phone] => 0123 456 7890
            [memID] => 2
            [memFirstName] => Jason
            [memSurname] => Kentucky
        )

    [1] => Array
        (
            [id] => 4
            [surname] => Kentucky
            [firstName] => John
            [email] => email@somewhere.com
            [phone] => 0123 456 7890
            [memID] => 3
            [memFirstName] => Michael
            [memSurname] => Kentucky
        )

)
但我想得到的是这样的东西:

Array
(
    [0] => Array
        (
            [id] => 4
            [surname] => Kentucky
            [firstName] => John
            [email] => email@somewhere.com
            [phone] => 0123 456 7890
            [members] => Array
            (
              [0] => Array
                  (
                    [memID] => 2
                    [memFirstName] => Mick
                    [memSurname] => Burke
                  ),
              [1] => Array
                  (
                    [memID] => 3
                    [memFirstName] => John
                    [memSurname] => Burke
                  )
            )

        )
)

如何通过Symfony2执行此操作?

在querybuilder中执行您想要的操作

    $qb = $this->getEntityManager()->createQueryBuilder();

    $result = $qb->select('mf, mc')
        ->from('MyBundle:MapFamilies', 'mf')
        ->join('mf.mapContacts', 'mc')
        ->where('mf.centre = :centre')
        ->setParameter('centre', $centre)
        ->getQuery()->getArrayResult();
这将为您提供一个MapFamily数组及其相关的MapContact实体


我猜了一下MapFamily->MapContact的属性名,所以您可能需要更改它。

您考虑过使用Doctrine 2的ORM功能吗?