gpt4 book ai didi

symfony - 将一对多连接结果作为对象中的数组返回

转载 作者:行者123 更新时间:2023-12-02 03:48:02 25 4
gpt4 key购买 nike

我有一个帖子表和另一个包含回复帖子的表。我在 Doctrine 中正确映射了一个(帖子)到多个(回复帖子)关系。我可以加入两者并得到我所期望的,每个回复的数组数组,但原始帖子的内容是相同的。是否可以为每个帖子返回一个数组/对象,并将回复内容放在一个数组中?

这是我现在得到的(如预期的那样):

array (size=2)
0 =>
array (size=2)
'content' => string 'Test homework post' (length=18)
'replyContent' => string 'this is a reply' (length=15)
1 =>
array (size=2)
'content' => string 'Test homework post' (length=18)
'replyContent' => string 'second reply' (length=12)

我想要这样的东西:

array (size=1)
0 =>
array (size=2)
'content' => string 'Test homework post' (length=18)
'replyContent' =>
array (size = 2)
0 => 'replyContent' => string 'this is a reply' (length=15)
1 => 'replyContent' => string 'second reply' (length=12)

我已尽最大努力进行研究,但只遇到有关返回数组而不是对象的结果。也许这是不可能的,但我认为它可能正在考虑在 php 类定义中的一对多关系映射:

$this->[name for protected variable] = new ArrayCollection();

非常感谢您的帮助!

编辑:这是我的 Doctrine 查询:

        SELECT
homeworkPost.content,
homeworkPostReplies.content AS replyContent
FROM AcmeMainBundle:HomeworkPost homeworkPost
LEFT JOIN homeworkPost.homeworkPostReplies homeworkPostReplies
WHERE homeworkPost.course = :course

最佳答案

我遇到了同样的问题并找到了解决方案,所以我把这个作为引用:我正在使用的一段代码

    $query = $this->em->createQueryBuilder();
$query->select("partial venue.{id,name,description,state,city,street,postalCode,lon,lat},partial r.{id}")
->from("CoreBundle:ServiceProvider","venue")
->join("venue.reviews","r","with","IDENTITY(r.serviceProvider) = venue.id")
->andWhere("venue.city = :city_name")
->andWhere("IDENTITY(venue.venueStatus) != 1")
->andWhere("IDENTITY(venue.venueStatus) != 3")
->setParameter("city_name",$cityName)
->orderBy("venue.points" ,"DESC")
->addOrderBy("venue.name" ,"ASC");

使用部分将解决这个问题引用 14. Doctrine Query Language — Doctrine 2 ORM 2 documentation - 14.2.4.1. Partial Object Syntax

关于symfony - 将一对多连接结果作为对象中的数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15623446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com