繁体   English   中英

Symfony,无效数据(AppBundle \\ Entity \\ InterventionType),预期为“ AppBundle \\ Entity \\ Intervention

[英]Symfony, Invalid data (AppBundle\Entity\InterventionType), expected "AppBundle\Entity\Intervention

我试图在我的基地上插入一行,从邮递员到带有一些外键的本地api,但我遇到了这个错误:

“”消息“:”无效数据\\“ 1 \\”(AppBundle \\ Entity \\ InterventionType),预期\\“ AppBundle \\ Entity \\ Intervention \\”。

它指出了不良实体,但我不知道为什么。 我的目标是“干预”,而该学说似乎出现在InterventionType中……这是我的实体:

 <?php namespace AppBundle\\Entity; use Doctrine\\ORM\\Mapping as ORM; use Symfony\\Component\\Validator\\Constraints as 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'; /** * some other things **/ /** * @var integer * * @ORM\\Column(name="id", type="integer") * @ORM\\Id * @ORM\\GeneratedValue(strategy="AUTO") */ private $id; } 

以及以外键为目标的实体:

 <?php namespace AppBundle\\Entity; use Doctrine\\ORM\\Mapping as 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; /** * Some other things **/ /** * @var integer * * @ORM\\Column(name="id", type="integer") * @ORM\\Id * @ORM\\GeneratedValue(strategy="IDENTITY") */ private $id; } 

最后是我的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
}

请帮助,我在做什么错?

我通过更改创建线的方式找到了解决方案。 我没有直接输入干预ID,而是将其传递到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; } 

因此,我不需要从客户端的json发布干预ID:

{
"message": "Steuh plait !",
"statut": 1,
"datemaintenanceprevue": "2017-08-23T15:00:00+00:00",
"heuresintervention": 1,
"heurestrajet": 0.5,
"kmtrajet": 27,
"deleted": 0,
"id": 2

}

我不知道这是否是正确的方法,但是它解决了问题。 希望它可以帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM