У меня есть сущность ServiceLevel в моем приложении Symfony 3.4.
/**
* @ORM\Table()
* @ORM\Entity()
*/
class ServiceLevel
{
...
/**
* @var FlightService
*
* @ORM\ManyToOne(targetEntity="PartnershipBundle\Entity\ServiceLevel\FlightService")
* @ORM\JoinColumn(referencedColumnName="id", nullable=false)
*
* @Assert\NotBlank()
*
* @Groups({"service_level", "service_level_create"})
*/
protected $flightService;
/**
* @var HotelService|null
*
* @ORM\ManyToOne(targetEntity="PartnershipBundle\Entity\ServiceLevel\HotelService")
* @ORM\JoinColumn(referencedColumnName="id", nullable=false)
*
* @Assert\NotBlank()
*
* @Groups({"service_level", "service_level_create"})
*/
protected $hotelService;
/**
* @var \Doctrine\Common\Collections\Collection|ExtraService[]
*
* @ORM\ManyToMany(targetEntity="PartnershipBundle\Entity\ServiceLevel\ExtraService", cascade={"persist"})
* @ORM\JoinTable(name="service_level_extra_service")
*
* @Groups({"service_level", "service_level_create"})
*/
protected $extraService;
Кроме того, я использую почтовый запрос для создания нового ServiceLevel
{
"name_en": "string",
"name_fr": "string",
"description_en": "string",
"description_fr": "string",
"flight_chargeable": true,
"hotel_chargeable": true,
"flight_service": 1,
"hotel_service": 1,
"extra_service": [1,2,3]
}
, также у меня есть действие контроллера с сериализаторомиспользуя
$serializer = $this->get('serializer');
$validator = $this->get('validator');
$em = $this->getDoctrine()->getManager();
$data = $request->request->all();
$serviceLevel = new ServiceLevel();
$serializer->denormalize($data, ServiceLevel::class, 'array', [
'object_to_populate' => $serviceLevel,
]);
Я получаю ошибку "message": "Expected argument of type \"PartnershipBundle\\Entity\\ServiceLevel\\FlightService or null\", \"integer\" given",
Я понимаю, почему это происходит, но я не могу найти решение для преобразования целого числа в Entity с использованием сериализатора.Есть ли способ обработки отношений ManyToOne и ManyToMany?Кстати, я не хочу создавать новые сущности, просто ссылки на существующие.