Построение доктрины

1

Я пытаюсь создать тему/систему комментариев с symfony, и у меня есть вопрос о докторе querybuilder.

если у меня есть два объекта:

/**
* @ORM\ManyToOne(targetEntity="Topicit", inversedBy="comments")
* @ORM\JoinColumn(name="topic_id", referencedColumnName="id")
*/
protected $topicit;

а также

/**
* @ORM\OneToMany(targetEntity="Comment", mappedBy="topicit")
*/
protected $comments;

В настоящее время у меня есть строитель (каждый столбец):

$repository = $this -> getDoctrine() -> getRepository('FTFairyBundle:Comment');

        $query = $repository->createQueryBuilder('p')        
          ->orderBy('p.topicit', 'ASC')
          ->getQuery();

      $comment = $query ->getResult();

Как я заставляю его получать только разыскиваемый topic_id? Например, если я открываю страницу с идентификатором №1, я хочу получить комментарии, связанные с этим идентификатором.

Спасибо за ваше время

Теги:
doctrine2

1 ответ

1
Лучший ответ

Вам не нужно использовать построитель запросов для такого рода задач, вы можете просто использовать геттер в своем Topicit объекте (который, конечно, вам нужно получить из БД)

Что-то вроде ->getComments() * (конечно, этот метод должен быть определен в классе " Topic ")

Doctrine позаботится о загрузке только "согласованных" данных из объекта Topic


Определение метода

public getComments()
{
    return $this->comments;
}

Если вы хотите напрямую запросить, вы можете изменить свой код следующим образом

$topicit_id = ... //code to retrieve topicit_id

$repository = $this->getDoctrine()-> getRepository('FTFairyBundle:Comment');

$query = $repository->createQueryBuilder('p')
    ->where('p.topicit = :topicit_id')
    ->setParameter('topicit_id', $topicit_id)
    ->orderBy('p.topicit', 'ASC')
    ->getQuery();

$comment = $query ->getResult();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню