방금 하나 이상의 질문을 추가 할 수있는 주제를 만드는 컨트롤러를 개발했습니다. 작동하지만 코드의 품질에 만족하지 않습니다.Symfony - 교리로 마지막 ID를 얻으십시오.
실제로 새 토픽을 만들 때 phpmyadmin에서 내 테이블 QUESTION의 마지막 ID를 검색 할 수 없습니다. (내가 잠시 두 테이블 : 제목, 질문)
내가 찾은 유일한 해결책은, 그리고 아주 못생긴입니다, 주제를 만들고, 마지막 질문을 통해 마지막 ID를 검색하는 내 QUESTION 테이블에 레코드를 만드는 것입니다 autoincrementation에 의해 getid()를 호출하고 같은 질문을 먼저 삭제하십시오. 질문 추가 양식을 표시하십시오.
더 좋은 해결책이 있습니까? :(
는 수익을 위해 미리 감사내 코드 :. 새 레코드를 생성
/**
* @Route("/add_sujet", name="add_sujet")
* @Method({"GET", "POST"})
*/
public function add_sujetAction(Request $request)
{
$sujet = new Sujet();
$form = $this->createForm(SujetType::class, $sujet)
->add('saveAndNext', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$sujet->setSlug($this->get('slugger')->slugify($sujet->getTitle()));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($sujet);
$entityManager->flush();
$this->addFlash('success', 'sujet.created_successfully');
if ($form->get('saveAndNext')->isClicked()) {
// On commence à créer les questions.
$question = new question();
$question->setContent('init');
$question->setType('init');
$question->setSujet($sujet);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($question);
$entityManager->flush(); // Add factice question<br>
$id = $question->getId()+1; // NOT OPTIMIZED.. <br>
$entityManager->remove($question);
<br>
$entityManager->flush(); // JE SAIS C'EST TRES MOCHE.. <br>
return $this->redirectToRoute('add_question', ['sujetSlug' => $sujet->getSlug(), 'id' => $id]);
}
// On annule la création de sujet.
return $this->redirectToRoute('sujet');
}
// On présente le formulaire pour déclaration sujet.
return $this->render('default/add_sujet.html.twig', [
'sujet' => $sujet,
'form' => $form->createView(),
]);
}
첫 번째 단계는 사용자 정의 리포지토리에서 * 사용자 정의 메서드로 이동하는 것입니다. * public function findLastQuestion()과 같은 것입니다. 그런 다음 단위 테스트를 사용하여 테스트하여 당신은 .... 당신이 더 간단한 구조를 원한다면 queryBuilder를 사용할 수 있습니다. 해결 방법. – Confidence
응답 해 주셔서 감사합니다. 내가 이것을 시도하자! :) –
그리고 앱이 첫 번째 사용자의 응답을 기다리는 동안 다른 사용자가 질문을하면 어떻게됩니까? 다음으로 사용할 수있는 질문 ID가 필요 없습니다. 특히 Doctrine 엔티티 관리자를 사용하는 경우. – Cerad