Ошибка Symfony Doctrine ArrayCollection

Моя текущая настройка описана ниже. Я хочу добиться. У одного дистрибьютора может быть несколько категорий. Но в категории Один может быть 1 Дистрибьютор 1: N <=> N: 1. Но это не удается, когда я нажимаю создать категорию, даже если поле ввода дистрибьютора пусто.

Категория

/**
 * @var string
 *
 * @ORM\Id()
 * @ORM\Column(type = "string", nullable=false, unique=true)
 * @ORM\GeneratedValue(strategy = "UUID")
 */
private $id;

/**
 * @var string
 * @ORM\Column(type = "string", nullable=false)
 */
private $title;

/**
 * @var Distributor
 * @ORM\ManyToOne(targetEntity = "AppBundle\Entity\Distributor", inversedBy = "category")
 * @ORM\JoinColumn(referencedColumnName = "id")
 */
private $distributor;

Распределитель:

/**
 * @ORM\Column(type = "integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy = "AUTO")
 */
private $id;

/**
 * @ORM\Column(type = "string", length=100)
 */
private $name;

/**
 * @var ArrayCollection
 * @ORM\OneToMany(targetEntity = "AppBundle\Entity\Category", mappedBy = "distributor")
 */
private $category;

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

КатегорияФорма:

$builder
        ->add('parent', EntityType::class, [
            'class' => Category::class,
            'choice_label' => 'title',
            'multiple' => true,
            'required' => false,
            'attr' => [
                'class' => 'select2 form-control select2insidemodal js-example-matcher'
            ]
        ])
        ->add('title', TextType::class, [
            'label' => 'Title',
            'required' => true,
            'by_reference' => true
        ])
        ->add('distributor', EntityType::class, [
            'class' => Distributor::class,
            'choice_label' => 'name',
            'required' => false,
            'attr' => [
                'class' => 'select2 form-control select2insidemodal js-example-matcher'
            ]
        ]);

Создать действие категории

public function createAction(Request $request)
    {
        $category = new Category();
        $categoryForm = $this->createForm(CategoryForm::class, $category);
        $categoryForm->handleRequest($request);


        if ($categoryForm->isSubmitted() && $categoryForm->isValid()) {
            $result = $this->categoryService->create($category);

        }

        return $this->render(
            '@app_bar/Category/categoryNew.twig',
            [
                'form' => $categoryForm->createView(),
            ]
        );
}

Я получаю сообщение об ошибке:

Expected argument of type "AppBundle\Entity\Category", "Doctrine\Common\Collections\ArrayCollection" given

как насчет вашего родительского поля? вы можете предоставить его аннотацию?

Andrew Vakhniuk 25.05.2018 02:50

если родитель - это коллекция? или это только одна Категория?

Andrew Vakhniuk 25.05.2018 02:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
173
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как я понял, parent не является коллекцией, поэтому измените параметр множественного родительского элемента формы на false:

 ->add('parent', EntityType::class, [
        'class' => Category::class,
        'choice_label' => 'title',
        'multiple' => false,
        'required' => false,
        'attr' => [
            'class' => 'select2 form-control select2insidemodal js-example-matcher'
        ]
    ])

да, я тоже это нашел. Но спасибо за ответ. Но есть еще одна проблема, которую я пока не могу решить! Все добавленные категории добавляются как высшая категория. Но если я редактирую категорию, я должен иметь возможность выбрать несколько категорий и разместить их как дочерние в моей родительской категории. Как я могу с этим справиться?

user8928150 25.05.2018 03:02

добавить дочерние поля OneToMany

Andrew Vakhniuk 25.05.2018 03:06

это / было уже OneToMany, я создал работу, чтобы получить все значения детей и поместить и родительское значение через CategoryService. Если у вас есть лучшее решение, пожалуйста, помогите.

user8928150 25.05.2018 03:28

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