Я пытаюсь создать тему/систему комментариев с 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, я хочу получить комментарии, связанные с этим идентификатором.
Спасибо за ваше время
Вам не нужно использовать построитель запросов для такого рода задач, вы можете просто использовать геттер в своем 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();