Запрос SELECT Symfony возвращает все столбцы, кроме одного с отношением к другой таблице? - PullRequest
0 голосов
/ 09 января 2019

DB:

здесь

Контроллер:

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

    dump($comments); exit;

Repository:

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, все они имеют геттеры и сеттеры.

Результат от 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
  ]
] 
...

1 Ответ

0 голосов
/ 09 января 2019

Вы не присоединились к сущностям в вашем запросе.

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...