抱歉,如果问题措辞不当,我想不出一个好的方法来描述我的问题。
所以基本上,我正在使用 Doctrine 查询构建器来尝试从我的Session
实体中获取培训课程列表。对于每个session
,我需要获取名称和日期等基本属性,但我还需要获取participants
. Session
实体和之间存在一对多的关系,因为给定的Participant
可能有多个。我只需要一个列表,嵌套在列表的每个项目中。像这样的东西:participants
session
participants
sessions
[
{
"session_name": "name1",
"session_date": "date1",
...
"participants": [
{
"participant_name": "john1",
...
},
{
"participant_name": "john2",
...
},
...
],
},
{
"session_name": "name2",
"session_date": "date2",
...
"participants": [
{
"participant_name": "john3",
...
},
{
"participant_name": "john4",
...
},
...
],
},
...
]
在我看来,这应该是非常基本的,但是对于我的生活,我无法让它与JOIN
s、子查询等一起使用。我得到的最接近的是这个错误,这确实意味着我正在尝试获取一个嵌套数组(但它不会让我):
SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row
运行此代码时出现此错误:
$query = $this->createQueryBuilder('s')
->select('
s.name,
s.date,
(SELECT p.nom FROM '.Participant::class.' p WHERE p.session = s.id) participants
')
->getQuery()->getArrayResult();
我知道我可以获取我的sessions
,然后遍历它们并使用另一个 DQL 查询获取他们的参与者,但显然这似乎不是正确的方法。有没有更好的办法?