Я уже десериализовал в массив объектов с:
$encoders = [new JsonEncoder()];
$normalizers = [new ObjectNormalizer(), new GetSetMethodNormalizer(), new ArrayDenormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$clients = $serializer->deserialize($myJson, 'App\Entity\Client[]', 'json');
И также десериализовал одну сущность в существующую (без INSERT, но UPDATE в дБ):
$clientDb = $clientRepository->find(1);
$client = $serializer->deserialize($myJson, Client::class, 'json', [AbstractNormalizer::OBJECT_TO_POPULATE => $clientDb ]);
Но когда я хочу сделать оба, doctrine только вставить в БД:
$clients = $serializer->deserialize($myJson, 'App\Entity\Client[]', 'json', [AbstractNormalizer::OBJECT_TO_POPULATE => $clientRepository->findAll()]);
Я что-то пропустил?
- Официальный do c, который я нашел, не упомянул об этом: https://symfony.com/doc/current/components/serializer.html#deserializing -in-an-существующий-объект -
РЕДАКТИРОВАТЬ: мне удается сделать это вручную с декодированием json в массив, затем l oop на нем, повторно -кодировать в json каждый элемент в l oop и, наконец, десериализовать их. Но если есть способ сделать это без декодирования / зацикливания / кодирования, я предпочитаю использовать его!