Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在symfony 4 api中获取仅显示选定数据的sql请求_Sql_Symfony_Symfony4 - Fatal编程技术网

如何在symfony 4 api中获取仅显示选定数据的sql请求

如何在symfony 4 api中获取仅显示选定数据的sql请求,sql,symfony,symfony4,Sql,Symfony,Symfony4,我必须显示包含一些专业的子类别列表。专业和子类别之间的对象关系映射为:manytomy。但在结果中,我得到了子类别列表,其中有一个与所有专业相关的对象。 我想只显示选定客户端的子类别列表。 请问怎么做 /* @QueryParam(name="professionnels", default="", description="") * @Rest\View(statusCode=Response::HTTP_OK, serializerGroups={"subCategory", "Defau

我必须显示包含一些专业的子类别列表。专业和子类别之间的对象关系映射为:manytomy。但在结果中,我得到了子类别列表,其中有一个与所有专业相关的对象。 我想只显示选定客户端的子类别列表。 请问怎么做

/* @QueryParam(name="professionnels", default="", description="")
 * @Rest\View(statusCode=Response::HTTP_OK, serializerGroups={"subCategory", "Default"})
 * @Rest\Get("/subCategory/all")
 */
 public function getAllSubCategoriesAction(Request $request, ParamFetcher $paramFetcher)
 {   
   $em = $this->getDoctrine()->getManager();
   $professionnels  = $paramFetcher->get('professionnels');
   $where = false;
   if (!empty($professionnels)){
     if (!$where) {
       $queryBuilder->leftJoin('a.professionnels', 'c')    
                    ->where('c.id IN (:professionnels)')
                    ->setParameter('professionnels', $professionnels);
     } else {
       $queryBuilder->leftJoin('a.professionnels', 'c')    
                    ->andWhere('c.id IN (:professionnels)')
                    ->setParameter('professionnels', $professionnels);
     }

        $params['professionnels'] = $professionnels;
        $where = true;
    }
    if(!empty($params)){
      $queryBuilder->setParameters($params)
                ->orderBy('a.name');
    } else {
      $queryBuilder->orderBy('a.name');
    }

    return $queryBuilder->getQuery()->getResult();
}

您需要显式地使用
QueryBuilder::class
select()
方法

例如:

$queryBuilder->select('c.id', 'c.name') // Only these columns will be selected
    ->leftJoin('a.professionnels', 'c')
    ->where('c.id IN (:professionnels)')
    ->setParameter('professionnels', $professionnels);


您可以像这样使用
select()
选择('a','c.id','c.name'),它将选择所有别名为
a
且仅指定为
u.
列的内容。

没有问题。如果它对您有所帮助,您可以接受它作为解决方案(勾选绿色复选标记):)