[英]The controller must return a response (Object(AppBundle\\Entity\\User) given)
[英]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.