gpt4 book ai didi

php - Symfony 将 native sql 转换为查询生成器

转载 作者:行者123 更新时间:2023-11-30 00:37:48 24 4
gpt4 key购买 nike

我有一个sql查询:

SELECT users.username, count(follows.user_id)
FROM follows
INNER JOIN users ON follows.follow_user_id=users.id
GROUP BY follow_user_id;

在 Sonata Admin 中,我想用关注者数量过滤我的数据。该请求有效,但我无法在 Sonata Admin 中使用它。

我有这个功能:

public function callbackFilterFollow($queryBuilder, $alias, $field, $value)
{
if (!$value) {
return;
}
//$queryBuilder->select('username')->addGroupBy('o.id');
return true;
}

我不知道如何使用查询生成器来转换我的 SQL 查询。

最佳答案

您是否已将查询表映射到实体?如果没有请看一下学说documentation for oneToMany relationships .

完成后,您可以执行类似的操作,请记住使用对象字段,而不是像下面的表字段名称那样!!

$qb->select('u.username, COUNT(f.user_id) as cnt')
->from('UserBundle:Follows' , 'f') //this is your entity
->leftJoin('UserBundle:Users','u') //your users entity
->groupBy('f.follow_user_id')
->getQuery()
->getOneOrNullResult();

您的实体可能需要拥有完整路径。然而,有两件事我不明白你在做什么。

  1. 您正在对内部联接进行计数,如果您只是使用内部联接进行 SELECT COUNT(*),则不需要分组依据。
  2. 您正在创建一个奏鸣曲过滤器,但我看不到您在哪里使用参数,我假设您的真实查询看起来不同并且在某处具有作为参数的值。所以你可能需要一些改变,你可以找到更多信息on this other post .

关于php - Symfony 将 native sql 转换为查询生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com