如何在symfony 4 api中获取仅显示选定数据的sql请求
我必须显示包含一些专业的子类别列表。专业和子类别之间的对象关系映射为:manytomy。但在结果中,我得到了子类别列表,其中有一个与所有专业相关的对象。 我想只显示选定客户端的子类别列表。 请问怎么做如何在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
/* @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.
列的内容。没有问题。如果它对您有所帮助,您可以接受它作为解决方案(勾选绿色复选标记):)