我想要的很简单,我想将查询的特定字段与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();
它会检索所有不错的字段,但是我想检索其中的一些字段,而忽略该方案中显示的其他字段
答案 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();
尽管我不知道您如何称呼您的姓名和姓氏属性,所以请小心使用它。