Как я могу хранить данные в коллекции массивов с помощью доктрины (Symfony 4)?

Мой контроллер:

            /**
            * @Route("/row/{slug}/{connect}/{field}/{productgroup}", name = "row", methods = {"POST"})
            */

            public function row($slug, $connect, $field,$productgroup, Request $request) {

              $EntityName = 'App\\Entity\\' . ucwords($slug);
              $con = 'App\\Entity\\' . ucwords($connect);
              $entity = $this->getDoctrine()->getRepository($EntityName)->findOneBy(['id' => $field]);
              $entityManager = $this->getDoctrine()->getManager();
              $argsId = $productgroup;
              $args = $entityManager->getReference($connect , $argsId);
              $entity->setProductgroup($args);

              $entityManager->flush();
              $response = new Response();
              $response->send();
              return $response;

            }

Сообщение об ошибке:

Class 'Productgroup' does not exist

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
0
770
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не могу сказать вам, почему возникает ошибка класса, но вы не можете передать объект сущности методу, который ожидает ArrayCollection, здесь:

/* args is not an ArrayCollection */
$args = $entityManager->getReference($connect , $argsId);
$entity->setProductgroup($args); 

Возможно, вам следует использовать addProductgroup().

Если $argsId представляет собой массив идентификаторов, вы должны получить ссылку на каждый из них и добавить объекты-призраки в коллекцию ArrayCollection.

Спасибо. Да, "добавить" было правильно. Смотрите мое рабочее решение ниже

peace_love 05.02.2019 10:34
Ответ принят как подходящий

рабочее решение:

     /**
        * @Route("/row/{entity}/{relation}/{entity_id}/{relation_id}", name = "row", methods = {"POST"})
        */

        public function row($entity, $relation, $entity_id, $relation_id, Request $request) {

          $entity_name = 'App\\Entity\\' . ucwords($entity);
          $relation_name = 'App\\Entity\\' . ucwords($relation);

          $entityManager = $this->getDoctrine()->getManager();
          $enity_reference = $entityManager->getReference($entity_name, $entity_id);
          $relation_reference = $entityManager->getReference($relation_name, $relation_id);

          $func = 'add'.$relation;
          $enity_reference->$func($relation_reference);
          $entityManager->persist($enity_reference);
          $entityManager->persist($relation_reference);

          $entityManager->flush();
          $response = new Response();
          $response->send();
          return $response;

        }

Я рад, что вы нашли решение, но без каких-либо объяснений или контекста этот ответ никому не поможет.

Stephan Vierkant 06.03.2019 12:30

Другие вопросы по теме