首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Symfony将本机sql转换为查询生成器。

Symfony将本机sql转换为查询生成器。
EN

Stack Overflow用户
提问于 2014-02-25 16:23:32
回答 1查看 1.2K关注 0票数 0

我有一个sql查询:

代码语言:javascript
运行
复制
SELECT users.username, count(follows.user_id)
FROM follows
INNER JOIN users ON follows.follow_user_id=users.id
GROUP BY follow_user_id;

在奏鸣曲管理中,我想用追随者的数量过滤我的数据。请求有效,但我不能在奏鸣曲管理中使用它。

我的职责是:

代码语言:javascript
运行
复制
public function callbackFilterFollow($queryBuilder, $alias, $field, $value)
{
    if (!$value) {
        return;
    }
    //$queryBuilder->select('username')->addGroupBy('o.id');
    return true;
}

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

EN

回答 1

Stack Overflow用户

发布于 2017-03-12 20:09:31

您是否将查询表映射到实体?如果不是的话,请看一下oneToMany关系文档的教义。

一旦您完成了这样的操作,请记住使用对象字段,而不是像表字段名下面那样!!

代码语言:javascript
运行
复制
$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. 您正在计算一个内部连接,如果您只选择COUNT(*)和内部联接,则不需要组by。
  2. 您正在创建奏鸣曲过滤器,但我不知道您在哪里使用参数,我假设您的实际查询看起来不同,并将值作为参数。因此,您可能需要一些更改,您可以找到更多的信息在另一个岗位上
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22020110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档