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

标签 php mysql sql symfony

我有一个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/

相关文章:

php - 如何创建键名与分配给数组的 $ 变量名相同的数组?

php - while循环到数组的转换

php - [0]=> 数组末尾的 bool(false)

mysql - 完全覆盖 Rails ActiveRecord 中的集合

sql - 在SQL Server 2008中加入Row_Number()

mysql - 选择数据 MYSQL

python - SQL:使用现有表/df 中的信息创建新表/df

php - 如何进行正确的时间计算?

php - API认证困惑

php - 高 HTTP API 调用时 Apache 服务器变慢