同时学说dql数组和对象
doctrine dql array and object at same time
我有两个实体,我想从第一个实体中获取不同元素的列表及其计数,并将整个第二个实体作为对象。我不确定我是否可以解释它,因为我的英语不好。
所以,这是函数:
public function findMostPopular()
{
return $this->getEntityManager()
->createQuery("
SELECT
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Predictions p
LEFT JOIN p.event e
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
")
->setMaxResults(5)
->getResult()
;
}
当我尝试调用它时,出现此错误:
[语义错误] line 0, col -1 near '
SELECT
':错误:如果不选择至少一个根实体别名,则无法通过标识变量 select 实体。
是否可以通过这种方式得到我想要的东西?
编辑: table中的示例数据:
737117017
737117017
737117017
737561075
737561075
737561075
738821787
738821787
738821787
738848055
739040139
我想计算每个不同的值。这些是带有事件的 table 的外键,所以我想要来自事件 table.
的相应对象
! c ! m ! event !
--------------------------------------------------------------
! 3 ! 737117017 ! the object from events with id 737117017 !
! 3 ! 737561075 ! the object from events with id 737561075 !
! 3 ! 738821787 ! the object from events with id 738821787 !
! 1 ! 738848055 ! the object from events with id 738848055 !
! 1 ! 739040139 ! the object from events with id 739040139 !
--------------------------------------------------------------
编辑 2
我通过以下方式让它工作。我确定,这不正确,但我不知道正确的方法。
SELECT
p,
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Predictions p
LEFT JOIN p.event e
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
根据提到的问题,您必须更改查询中实体的顺序,因此它应该类似于:
public function findMostPopular()
{
return $this->getEntityManager()
->createQuery("
SELECT
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Event e
LEFT JOIN e.predictions p
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
")
->setMaxResults(5)
->getResult()
;
}
我有两个实体,我想从第一个实体中获取不同元素的列表及其计数,并将整个第二个实体作为对象。我不确定我是否可以解释它,因为我的英语不好。
所以,这是函数:
public function findMostPopular()
{
return $this->getEntityManager()
->createQuery("
SELECT
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Predictions p
LEFT JOIN p.event e
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
")
->setMaxResults(5)
->getResult()
;
}
当我尝试调用它时,出现此错误:
[语义错误] line 0, col -1 near ' SELECT ':错误:如果不选择至少一个根实体别名,则无法通过标识变量 select 实体。
是否可以通过这种方式得到我想要的东西?
编辑: table中的示例数据:
737117017
737117017
737117017
737561075
737561075
737561075
738821787
738821787
738821787
738848055
739040139
我想计算每个不同的值。这些是带有事件的 table 的外键,所以我想要来自事件 table.
的相应对象! c ! m ! event !
--------------------------------------------------------------
! 3 ! 737117017 ! the object from events with id 737117017 !
! 3 ! 737561075 ! the object from events with id 737561075 !
! 3 ! 738821787 ! the object from events with id 738821787 !
! 1 ! 738848055 ! the object from events with id 738848055 !
! 1 ! 739040139 ! the object from events with id 739040139 !
--------------------------------------------------------------
编辑 2
我通过以下方式让它工作。我确定,这不正确,但我不知道正确的方法。
SELECT
p,
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Predictions p
LEFT JOIN p.event e
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
根据提到的问题,您必须更改查询中实体的顺序,因此它应该类似于:
public function findMostPopular()
{
return $this->getEntityManager()
->createQuery("
SELECT
e,
COUNT(p.event) c,
IDENTITY(p.event) m
FROM AppBundle:Event e
LEFT JOIN e.predictions p
WHERE p.status = 'pending'
GROUP BY p.event
ORDER BY c DESC , m ASC
")
->setMaxResults(5)
->getResult()
;
}