如何在querybuilder中的某些addselect中将字段分组?

时间:2019-07-01 05:09:45

标签: json symfony orm doctrine

我想要的很简单,我想将查询的特定字段与querybuilder分组为3个不同级别的别名关系,更清楚一点,我有3个相关表,consulta(医疗咨询),paciente(pacient) ,医生(医生),使用人员(用户),因此,我在查询中获得的所有信息都是具有其实际数据,医生数据及其相关用户数据的医学咨询,我想要的是省略那些相关的不相关字段表中,我正在使用addSelect在关系级别之间包括所有数据,但是我得到的是所有字段,我想检索“ paciente”表的特定字段以及用户表(与用户相关)医生),我将展示该方案的具体情况:

Consulta :{
        // omit the other fields
         {paciente: name and last name}
         {doctor: { usuario: name and last name}}}

$queryBuilder = $em->getRepository('MedicoBundle:Consulta')
               ->createQueryBuilder('e')
               ->leftJoin('e.paciente', 'a')
               ->addSelect('a')
               ->leftJoin('e.doctor', 'o')
               ->addSelect('o')
               ->leftJoin('o.usuario', 'u')
               ->addSelect('u')
               ->where('e.fecha =:fecha')
               ->orderBy('e.id', 'ASC')
               ->setParameter('fecha', $fecha)
               ->getQuery();

它会检索所有不错的字段,但是我想检索其中的一些字段,而忽略该方案中显示的其他字段

1 个答案:

答案 0 :(得分:0)

只需选择所需内容即可,而不是选择所有内容:

$queryBuilder = $em->getRepository('MedicoBundle:Consulta')
               ->createQueryBuilder('e')
               ->leftJoin('e.paciente', 'a')
               ->addSelect('a.name, a.lastname')
               ->leftJoin('e.doctor', 'o')
               ->addSelect('o.name, o.lastname')
               ->leftJoin('o.usuario', 'u')
               ->where('e.fecha =:fecha')
               ->orderBy('e.id', 'ASC')
               ->setParameter('fecha', $fecha)
               ->getQuery();

尽管我不知道您如何称呼您的姓名和姓氏属性,所以请小心使用它。