api - Symfony, Invalid data (AppBundle\Entity\InterventionType), expected "AppBundle\Entity\Intervention -
i'm trying insert line base, postman local api foreign keys , have bug :
"message": "invalid data \"1\"(appbundle\entity\interventiontype), expected \"appbundle\entity\intervention\"."
it pointed bad entity , don't know why. i'm targeting "intervention", , doctrine seems go in interventiontype... here's entity :
<?php namespace appbundle\entity; use doctrine\orm\mapping orm; use symfony\component\validator\constraints assert; use \datetime; /** * interventionrapport * * @orm\table(name="intervention_rapport", options={"comment":"table répertoriant les retours associés aux différentes interventions (commerciales et techniques) - egalement utilisée pour rémunérer les techniciens et calculer les frais kilométriques tech/com"}) * @orm\entity */ class interventionrapport { /** * @var integer * @orm\onetoone(targetentity="appbundle\entity\intervention") * @orm\joincolumn(name="intervention", nullable=false) */ private $intervention; /** * @var string * * @orm\column(name="message", type="text", nullable=true) */ private $message; /** * @var integer * * @orm\column(name="statut", type="integer", nullable=false) */ private $statut = '0'; /** * other things **/ /** * @var integer * * @orm\column(name="id", type="integer") * @orm\id * @orm\generatedvalue(strategy="auto") */ private $id; }
and entity targeted foreign key:
<?php namespace appbundle\entity; use doctrine\orm\mapping orm; /** * intervention * * @orm\table(name="intervention") * @orm\entity */ class intervention { /** * @var integer * * @orm\manytoone(targetentity="appbundle\entity\interventiontype") * @orm\joincolumn(name="type", nullable=false) */ private $type; /** * other things **/ /** * @var integer * * @orm\column(name="id", type="integer") * @orm\id * @orm\generatedvalue(strategy="identity") */ private $id; }
and json:
{ "message": "steuh plait !", "statut": 1, "datemaintenanceprevue": "2017-08-23t15:00:00+00:00", "heuresintervention": 1, "heurestrajet": 0.5, "kmtrajet": 27, "deleted": 0, "intervention": 1, "id": 2 }
please help, doing wrong?
i found slution changing way created line. don't put intervention id directly, pass url :
class rapportcontroller extends controller { /** * @rest\post( * path = "/reports/intervention={id}", * name = "app_report_create" * ) * @rest\view(statuscode = 201) * @paramconverter("report", converter="fos_rest.request_body") */ public function createaction(request $request, interventionrapport $report) { $em = $this->getdoctrine()->getmanager(); $intervention = $this->get('doctrine.orm.entity_manager') ->getrepository('appbundle:intervention') ->find($request->get('id')); //$report = new \datetime($datemaintenanceprevue); $report->setintervention($intervention); $em->persist($report); $em->flush(); return $report; }
so, don't need post intervention id client' json :
{ "message": "steuh plait !", "statut": 1, "datemaintenanceprevue": "2017-08-23t15:00:00+00:00", "heuresintervention": 1, "heurestrajet": 0.5, "kmtrajet": 27, "deleted": 0, "id": 2
}
i don't know if it's correct way it, solved problem. hope can else.
Comments
Post a Comment