Bonjour,

Voila je rencontre un petit problème avec mon code. j'ai utilisé base de donnée mysql et l'api rest , code_ens c'est un clé étrangers , j'au besoin d'accèder à cette champs mais mon code est par défaut il il accède à le champs id de la table EnseignantHasGrade ,

Ce que je fais

/**
 * @Rest\View() 
 * @Rest\Get("/grade_ens/{code_ens}")
 */
public function getGrEnsAction(Request $request)
{
    $req= $this->get('doctrine.orm.entity_manager')
            ->getRepository('AppBundle:EnseignantHasGrade')
            ->find($request->get('code_ens'));

    /* @var $ens Enseignant */
     if (empty($req)) {
        return new JsonResponse(['message' => 'grade enseignant not found'], Response::HTTP_NOT_FOUND);
    }
    $formatted = [
       'code'=> $req->getCodeGrade(),
    ];

    return new JsonResponse($formatted);
}

Ce que je veux

je veux accèder à le champs code_ens pour afficher une donnée "code grade"

Ce que j'obtiens

{
"message": "grade enseignant not found"
}

1 réponse


Je te recommande de lire la documentation de Doctrine. Find est un alias pour faire une requête avec un WHERE sur la/les clé(s) primaire(s).

Ici tu dois faire :

    $req= $this->get('doctrine.orm.entity_manager')
            ->getRepository('AppBundle:EnseignantHasGrade')
            ->findOneBy(['code_ens' => $request->get('code_ens')]);