Как я могу выбрать только дочерние атрибуты с помощью querybuilder, используя symfony 4? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть класс с именем "застрахованный объект", у которого есть двое детей "автомобиль" и "дом", и этот "застрахованный объект" имеет отношение один к одному с "контрактом". Идея заключается в том, что когда пользователь хочет добавить контракт, он должен указать его тип, будь то автомобиль или дом, и добавить его в базу данных в соответствии с его типом. Так, во время работы над API (редактирующим) возникла проблема, когда я хочу выбрать автомобиль для редактирования, он показывает мне эту ошибку ошибка, когда я выполняю API

это API редактирования автомобиля.

/**
 * @Route("/api/editVoiture/{id}", name="editVoiture", methods={"PUT"})
*/
public function editVoiture($id, Request $request, EntityManagerInterface $em,ObjetAssureRepository $objetAssureRepository, VoitureRepository $voitureRepo)
{
    $request = Request::createFromGlobals();
    $jsonRecu = $request->getContent();
    try {
        $donnees = json_decode($jsonRecu);
        $voiture = $voitureRepo->findVoitureById($id);
        if($voiture != null){
            $voiture->setDateAcquisition($donnees->dateAcquisition);
            $voiture->setDateProduction($donnees->dateProduction); 
            $voiture->setMarque($donnees->marque);    
            $voiture->setNumChassis($donnees->numChassis);
            $voiture->setPuissance($donnees->puissance);
            $voiture->setModele($donnees->modele);                   
            $em->persist($voiture);
            $em->flush();
            $objAss = $objetAssureRepository->findObjet($voiture->getId(),"voiture");
            $objAss->setDateAcquisition($donnees->dateAcquisition);
            $objAss->setDateProduction($donnees->dateProduction);
            $em->persist($objAss);
            $em->flush();
            return new Response('ok', 200);
        } else {
            return new Response('does not exist',404);
        }
    } catch (UniqueConstraintViolationException $e) {
        return $this->json([
            'status' => 400,
            'message' => $e->getMessage(),
        ], 400);
    }
}

, а это код репозитория

/**
 * @return Voiture
 */
public function findVoitureById($id): ?Voiture
{
    return $this->createQueryBuilder('v')
        ->andWhere('v.id = :id')
        ->setParameter('id',$id)
        ->getQuery()
        ->getOneOrNullResult()
    ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...