Symfony에서 서로 관련이있는 두 개의 엔티티 (질문, 답변)가 있습니다. 두 엔티티 사이의 관계는 하나에서 여러 개입니다 (하나의 질문은 여러 개의 대답을 가질 수 있습니다). 두 엔티티 간의 관계에 대한 Symfony의 문서화에 이어, 나는 응답 엔티티에서 Symfony가 생성 한 question_id 필드를 사용하고 있습니다. 내 질문 엔티티 저장소에서 쿼리를 사용하여 모든 질문에 답변을 얻으려고하지만 관련 레코드에 참여하는 방법에 대한 설명이 Joining Related Records in Symfony 인 경우 Symfony에서 별칭이 작동하는 방식을 이해할 수 없습니다. 별칭을 이해하는 데 도움이 될만한 점이 있습니까? 감사합니다 이것은 내 질문 저장소 클래스와 내 컨트롤러에 있습니다. 지금은 내 질문과 관련된 모든 대답 대신 단 하나의 대답 결과를 얻고 있습니다. 내 개체 간의Symfony 쿼리 빌더 및 별칭
public function findOneByIdJoinedToCategory($questionId)
{
$query = $this->getEntityManager()
->createQuery(
'SELECT a, q FROM QuizBundle:Answer a
JOIN a.answers q
WHERE a.id = :id'
)->setParameter('id', $questionId);
try {
return $query->getOneOrNullResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
public function showAction($answerId)
{
$product = $this->getDoctrine()
->getRepository('QuizBundle:Answer')
->findOneByIdJoinedToCategory($answerId);
$data = $product->getAnswer();
return new Response($data);
// ...
}
관계 :
class Answer
{
/**
* @ORM\ManyToOne(targetEntity="Question", inversedBy="answers")
* @ORM\JoinColumn(name="question_id", referencedColumnName="id")
*/
private $question;
public function setQuestion(\QuizBundle\Entity\Question $question = null)
{
$this->question = $question;
return $this;
}
/**
* Get question
*
* @return \QuizBundle\Entity\Question
*/
public function getQuestion()
{
return $this->question;
}
}
class Question
{
/**
* @ORM\OneToMany(targetEntity="Answer", mappedBy="question")
*/
private $answers;
public function __construct()
{
$this->answers = new ArrayCollection();
}
public function addAnswer(\QuizBundle\Entity\Answer $answer)
{
$this->answers[] = $answer;
return $this;
}
/**
* Remove answer
*
* @param \QuizBundle\Entity\Answer $answer
*/
public function removeAnswer(\QuizBundle\Entity\Answer $answer)
{
$this->answers->removeElement($answer);
}
/**
* Get answers
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAnswers()
{
return $this->answers;
}
}
'만'null' 반환의 예외를 잡으려고합니다. – marc
질문과 답변 사이의 교리 관계를 보여주는 관련 코드를 게시 할 수 있습니까? 아마도 당신은 복잡한 DQL을 필요로하지 않지만 단순히 관계를 탐색 할 수 있습니다. (예를 들어 답을 찾기 만하면'$ answer-> getQuestions()') – Matteo
@Matteo가 편집 된 게시물을 확인합니다. 지금은 내 코드에서 단 하나의 대답을 얻었지만 내 질문에는 두 가지 대답이 있습니다. 질문 id는 필드 question_id의 응답 엔티티에서 참조됩니다. – Otonel