Symfony表单错误:必须管理传递给选择字段的类型为“ ...”的实体也许您忘记将其保留在实体管理器中

如何解决Symfony表单错误:必须管理传递给选择字段的类型为“ ...”的实体也许您忘记将其保留在实体管理器中

客观

我正在尝试制作一种基本形式来招募新玩家参加这项运动。这取自Symfony 例如:

https://symfony.com/doc/current/form/dynamic_form_modification.html#form-events-submitted-data

代码

我有3个实体:

播放器列表 https://github.com/ChimeraBlack1/Symphart/blob/main/src/Entity/PlayerList.php

体育 https://github.com/ChimeraBlack1/Symphart/blob/main/src/Entity/Sport.php

位置 https://github.com/ChimeraBlack1/Symphart/blob/main/src/Entity/Position.php

我有一个表格:

NewPlayerType https://github.com/ChimeraBlack1/Symphart/blob/main/src/Form/NewPlayerType.php

我有一个控制器

NewPlayerController https://github.com/ChimeraBlack1/Symphart/blob/main/src/Controller/NewPlayerController.php

错误

Entity of type "Doctrine\Common\Collections\ArrayCollection" passed to the choice field must be managed. Maybe you forget to persist it in the entity manager?

详细信息:

每当我使用“ EntityType”类型的表单构建器创建表单时,似乎都会出现此错误

参考https://github.com/ChimeraBlack1/Symphart/blob/main/src/Form/NewPlayerType.php (第22行)

    ->add('sport',EntityType::class,[
        'class' => Sport::class,'query_builder' => function(EntityRepository $er) {
            return $er->createqueryBuilder('s')
                ->orderBy('s.sport','ASC');
        },'choice_label' => 'sport',])

在我看来,这是因为我以“ NewPlayerType”形式引用“ Sport :: class”。如果要引用“ PlayerList :: class”,则不会遇到此错误。但是,如何获取基于此类其他实体的字段以单个表格填充?我在概念上在这里想念一些东西...

解决方法

好的,经过20个小时的谷歌搜索,脸部苍白和愤怒的眼泪,我弄清楚了。

问题出在我在实体之间建立的关系上。我有“ OneToMany”关系,应该有“ ManyToOne”关系。

如果您看到此问题,请从“向后”的角度重新编写您的关系,这应该可以解决问题。

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?