首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否按空ArrayCollection对实体进行排序?

是否按空ArrayCollection对实体进行排序?
EN

Stack Overflow用户
提问于 2015-10-15 21:15:17
回答 2查看 54关注 0票数 0

我有两个实体:客户端和用户。可以将用户分配给客户端(多对多;一个用户可以管理多个客户端,客户端可以由多个用户管理)。在我的应用程序中,我有一个客户列表。有没有办法使用Doctrine在列表顶部显示没有分配用户的客户端?或者我应该在PHP中只使用findAll()和排序?

编辑:基本上,通过创建@ORM关系,我在MySQL中有3个表: clients、users和clients_of_users (包含client_id和user_id列)。使用普通SQL:

代码语言:javascript
运行
复制
SELECT c.id, c.name, c.surname, COUNT(cof.user_id) as `Number of Users` 
FROM clients c 
LEFT JOIN clients_of_users cof ON c.id = cof.client_id 
GROUP BY c.id 
ORDER BY `Number of Users` ASC

通过这个查询,我得到了结果:

代码语言:javascript
运行
复制
1    Name1    Surname1    0
6    Name6    Surname6    0
5    Name5    Surname5    1 
7    Name7    Surname7    1 
3    Name3    Surname3    2 
4    Name4    Surname4    3 
2    Name2    Surname2    4 

太棒了!我有一些没有用户的客户端。最后,我想让这个列表按客户端id排序,但顶部仍然是没有用户的客户端,因此结果将如下所示:

代码语言:javascript
运行
复制
1    Name1    Surname1    0
6    Name6    Surname6    0
2    Name2    Surname2    4 
3    Name3    Surname3    2 
4    Name4    Surname4    3 
5    Name5    Surname5    1 
7    Name7    Surname7    1

所以,所有这些我都想用Symfony2 / Doctrine的方式来实现。这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2015-10-15 21:32:07

它应该可以通过特定的方法直接在您的存储库中使用:

代码语言:javascript
运行
复制
public function findClientOrderedByUser()
{
    $qb = $this->createQueryBuilder('c')
                    ->select('c')

                    /***/

                    ->orderBy('c.user', 'DESC');


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

希望它能帮助你

票数 2
EN

Stack Overflow用户

发布于 2015-10-15 21:31:22

如果我没理解错的话,这是一个非常基本的问题。您应该添加一个ClientRepository类,并在query.You中添加一个使用ORDER BY的自定义函数,这样就可以使用DQL或querybuilder构建此查询。可以在here中找到一个很接近的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33149569

复制
相关文章

相似问题

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