- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我将 Symfony 2 与 Doctrine 一起使用,并且我有两个实体加入了多对多关联。假设我有两个实体:User 和 Group,db 上的相关表是 users、groups 和 users_groups。
我想在 DQL 中获取前 10 个人口最多的组,但我不知道在连接表 (users_groups) 上执行查询的语法。我已经看过 Doctrine 手册,但我没有找到解决方案,我想我还有很多关于 DQL 的知识。
在普通的 sql 中将是:
select distinct group_id, count(*) as cnt from users_groups group by group_id order by cnt desc limit 10
你能帮我把它翻译成 DQL 吗?
更新(类):
/**
* Entity\E_User
*
* @ORM\Table(name="users")
* @ORM\Entity
*/
class E_User
{
/**
* @ORM\ManyToMany(targetEntity="E_Group", cascade={"persist"})
* @ORM\JoinTable(name="users_groups",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="cascade")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id", onDelete="cascade")}
* )
*/
protected $groups;
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/* ... other attributes & getters and setters ...*/
}
/**
* Entity\E_Group
*
* @ORM\Table(name="groups")
* @ORM\Entity
*/
class E_Group
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="text", type="string", length=255)
*/
private $name;
/* ... other attributes & getters and setters ...*/
}
最佳答案
没有看到实际的类并不容易,但是通过猜测你有一个多对多的双向关系:
$dql = "SELECT g.id, count(u.id) as cnt FROM Entity\Group g " .
"JOIN g.users u GROUP BY g.id ORDER BY cnt DESC LIMIT 10;";
$query = $em->createQuery($dql);
$popularGroups = $query->getArrayResult();
更新:
你不必使用双向关系,你可以反过来查询:
$dql = "SELECT g.id, count(u.id) as cnt FROM Entity\User u " .
"JOIN u.groups g GROUP BY g.id ORDER BY cnt DESC LIMIT 10;";
关于php - DQL 多对多和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175736/
如何形成 DQL 查询以获取不包括文档 um 中创建的虚拟文档(同时添加对文件的引用)的文件列表。任何人都可以帮助我。 最佳答案 如 r_link_count is > 0 并且 object 是一个
所以,我有这个实体结构: User有一些Email s(同时多个); 每个Email属于Domain s (如果 email@example.com,那么我的数据库中有 Domain “example
我在 documentum 中发现了未记录的 DQL 命令(在 D6.5 上测试过) 执行计数 session 此查询输出中的“hot_list_size”、“warm_list_size”、“col
我们总是可以通过语法(select * from table_name)从表中找到相应的表属性,有没有办法反之亦然我的意思是有没有办法用属性名找到表名? 最佳答案 好吧,如果你所说的表是指对象,你可以
谁能告诉我如何仅使用“DQL”将文档从客户端机器导入到 documentum 存储库,下面是我正在使用的命令...... 我得到的错误是 [DM_SYSOBJECT_E_CANT_ACCESS_FIL
是否有机会从所有参数代替标记的学说查询生成器对象中获取 DQL 查询? 类(class) $query->getDQL()将返回查询但使用参数标记而不是实际值,即使它们已由 setParameter
试图将我的 sql 查询转换为 dql,似乎我做错了什么。 我需要基本的连接,像这样。 SELECT a.id, a.title, u.name FROM articles JOIN users ON
我使用一对一的关系作为实体的 id: Actor 实体 $metadata->mapOneToOne([ 'fieldName' => 'user', 'id' => true,
通常,如果我运行如下所示的 DQL 查询,它将返回实体对象列表: $d = $this->getDoctrine()->getRepository('xxxWebsiteBundle:Location
有人可以建议我使用 DQL 查询来查找 documentum 中存储库中的事件用户数吗? 下面是我正在使用的查询,但它没有给出正确的结果,有人可以提出建议吗? select count(user_na
如果我们提供相应文件的 object_id,任何人都可以使用 Documentum 查询语言提供解决方案,以访问从 documentum checkout 的文件的文件夹详细信息。谢谢………… 最佳答
如何从日期时间格式 (00-00-0000 00:00:00) 中提取不同的年份?我正在使用 Symfony 2 和 DQL。 在 SQL 中,它将是: SELECT DISTINCT extract
我有这个存储库功能来选择特定日期内与图像拟合相关的所有投票: public function getTopNImages(int $n) { $date = date_form
在我的实体“Item”中,有一个称为“products”(实体“Product”)的 ArrayCollection 属性,该属性可以为空 我需要在一次 DQL 调用中对“Item”实体数组进行所有产
我正在尝试从表 o 中 SLECT * ,其中供应商是我传递的内容。(这是在 Doctrine 存储库的上下文中)。然后我想运行一个子查询和 SELECT * FROM AppBundle:Price
我正在尝试更新一个查询中某些表中的一行。我已经完成了: $this->getDoctrine()->getManager() ->createQuery('
我将 Symfony 2 与 Doctrine 一起使用,并且我有两个实体加入了多对多关联。假设我有两个实体:User 和 Group,db 上的相关表是 users、groups 和 users_g
我正在尝试将这个我认为简单的 mysql 查询转换为 Doctrine dql,但是,我现在遇到了很大的困难...... SELECT (c.prix-aggregates.AVG) AS test
我在 MySQL 数据库中有 2 个表,我使用的是 doctrine 1.2 和 symfony 1.4.4 装机量和备用量 Installedbase: ib_id app_id location
我正在 Doctrine Documentation 中尝试这部分其中你可以: 手动编写DQL 对于您这些 SQL 爱好者,我们没有忘记您。您可以选择手动编写 DQL 查询并将它们解析为 Doctri
我是一名优秀的程序员,十分优秀!