Symfony SELECT 查询 returns 所有列,除了一个与其他 table 相关的列?

Symfony SELECT query returns all columns, except one with relation to other table?

数据库:

here

控制器:

    $comments = $commentRepo->getPaginationPost($recordsPerPage, $offset, $id);

    dump($comments); exit;

存储库:

public function getPaginationPost($limit, $offset, $postId)
{
    $qb = $this->createQueryBuilder('c')
        ->where('c.postId = :postId')
        ->setParameter('postId', $postId)
        ->andWhere('c.replyTo = 0')
        ->orderBy('c.dateAdded', 'DESC')
        ->setMaxResults($limit)
        ->setFirstResult($offset)
        ->getQuery();

    return $qb->getArrayResult();
}

实体:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Tests\Fixtures\Person;

/**
 * Comment
 *
 * @ORM\Table(name="comment")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\CommentRepository")
 */
class Comment
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="content", type="text")
     */
    private $content;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="comments")
     * @ORM\JoinColumn(name="person_id", referencedColumnName="id")
     */
    private $person;

嗯,转储的结果是完整的数据,除了列 person (person_id)。任何想法为什么会这样? Person 列是 oneToMany 关系,它们都有 getter 和 setter。

来自 dump() 的结果:

ArticleController.php on line 183:
array:10 [
  0 => array:5 [
    "id" => 168
    "content" => "Лошо е"
    "dateAdded" => DateTime {#7320
      +"date": "2019-01-09 11:02:35.000000"
      +"timezone_type": 3
      +"timezone": "UTC"
    }
    "replyTo" => 0
    "postId" => 8
  ]
  1 => array:5 [
    "id" => 167
    "content" => "нееее лошооо"
    "dateAdded" => DateTime {#7321
      +"date": "2019-01-08 16:07:09.000000"
      +"timezone_type": 3
      +"timezone": "UTC"
    }
    "replyTo" => 0
    "postId" => 8
  ]
] 
...

您没有在查询中加入实体。

public function getPaginationPost($limit, $offset, $postId)
{
    $qb = $this->createQueryBuilder('c')
               ->join('c.person', 'p')    // <--- see this
               ->addSelect('p')
               ->where('c.postId = :postId')
               ->setParameter('postId', $postId)
               ->andWhere('c.replyTo = 0')
               ->orderBy('c.dateAdded', 'DESC')
               ->setMaxResults($limit)
               ->setFirstResult($offset)
               ->getQuery();

    return $qb->getArrayResult();
}