Сериализация массива объекта с атрибутом другого объекта с помощью сериализатора symfony4 - PullRequest
0 голосов
/ 27 сентября 2019

Привет, каждый, у меня есть объект под названием Vente, этот объект связан с другим, называемым VenteAdd, с отношением ManyToOne (один Vente имеет один или несколько VenteAdd, а каждый VenteAdd связан только с одним Vente) в классе объектов vente. СвойствоventeAdd объявляется как сущность venteAdd как обычно Doctrine, а в конструкторе сущность venteAdd инициализируется как ArrayCollection.когда угловой клиент 7 отправляет объект Vente, атрибут ventAdd является массивом VenteAdd, когда я пытаюсь десериализовать объект vente с помощью сериализатора Symfony, у меня появляется ошибка

Не удалось денормализовать значение атрибута "_vente_add" длякласс "App \ Entity \ Vente": ожидаемый аргумент типа "App \ Entity \ VenteAdd", "массив", заданный в пути свойства "_vente_add"

У меня есть набор и функции get venteAdd вмоя сущность vente и paremters являются коллекцией. Может кто-нибудь помочь мне, пожалуйста, мой код: VenteController

$data = $request->getContent();
$data = $this->nativeSerializer->deserialize($data,'App\Entity\Vente', 'json');

инициализация сериализатора в конструкторе venteContoller:

 $dateCallback = function ($innerObject, $outerObject, string $attributeName, string $format = null, array $context = []) {
            return $innerObject instanceof \DateTime ? $innerObject->format(\DateTime::ISO8601) : '';
        };
        $defaultContext = [
            AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object, $format, $context) {
                return $object->getId();
            },
            AbstractNormalizer::CALLBACKS => [
                'dateVente' => $dateCallback,
                'dateEntree'=>$dateCallback,
            ],
        ];
        $normalizer = new ObjectNormalizer(null,null,null,null,null,null,$defaultContext);
        $this->nativeSerializer = new Serializer([$normalizer,new ArrayDenormalizer()], [new JsonEncoder()]);

сущность Vente

Декларация доктрины:

 /**
     * @ORM\OneToMany(targetEntity="App\Entity\VenteAdd", mappedBy="vente")
    */
    private $VenteAdd;

Конструктор:

   public function __construct()
    {
        $this->VenteAdd = new ArrayCollection();
    }

Получатель и установщик:

/**
 * @return Collection|VenteAdd[]
 */
public function getVenteAdd(): Collection
{
    return $this->VenteAdd;
}

/**
  * @param Collection|VenteAdd[]
  * @return self
 */
public function setVenteAdd(ArrayCollection $venteAdd): self
{
    $this->VenteAdd = $venteAdd;
    return $this;
}

Пожалуйста, помогите мне, спасибо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...