如何使用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功能吗?