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

标签 symfony doctrine one-to-many dql

我有一个帖子表和另一个包含回复帖子的表。我在 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/

相关文章:

symfony - 如何在 Symfony Twig 中显示覆盖复选框的标签

symfony - 从现有数据库创建实体

php - 如何更新 Doctrine 中的字段以将其设置为空

doctrine - Symfony 3 - 自动生成 BOOLEAN getter 和 setter - isActive vs getActive

ios - 核心数据 - 一对多关系变得零

php - 在 PHP Symfony 中从 ElasticSearch 迁移到 OpenSearch

symfony - 检查 Twig 模板中的类范围 ACL

java - hql join 无法解析属性;使用两个表映射

symfony - 将依赖项注入(inject)实体存储库

java - 使用 @OneToMany 或 @ManyToMany 来针对发生的未映射类异常