gpt4 book ai didi

symfony - 无法转换属性路径 "tagname"的值。需要 Doctrine\Common\Collections\Collection 对象

转载 作者:行者123 更新时间:2023-12-01 04:54:26 30 4
gpt4 key购买 nike

我正在使用两个 ManyToMany 相关实体,即 categorytag .

实体Tag (相关细节):

/**
*
* @var string
*
* @ORM\Column(name="tagname", type="string")
*/
protected $tagname;

/**
* @ORM\ManyToMany(targetEntity="Category", mappedBy="tags")
*/
protected $categories;

实体类别(相关详情):
/**
*
* @var string
*
* @ORM\Column(name="CategoryName", type="string",length=200)
*/
protected $categoryname;

/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="categories")
*/
protected $tags;

我有一个带有选择输入(CategoryType)和多个选择输入(TagType)字段的表单。这两个字段都是 EntityType 字段。 TagType 嵌入在 CatgoryType 中。

为此,我无法使用 cascade=persist功能,并在我的 Controller 中手动添加提交的标签。提交时,表单数据会被持久保存在数据库中,没有任何问题。

问题是,提交后,当我在 Controller 中获取提交的类别(和相关标签)并将其传递给表单时,出现此错误 - Unable to transform value for property path "tagname": Expected a Doctrine\Common\Collections\Collection object.
获取的类别对象( var_dump($category->getTags()->getValues()); )的 var_dump 结果为我提供了一个关联 Tag 对象的数组,其属性为 protected 'tagname' => string 'tag1' .

据我了解 Interface Collection与 php 数组非常相似,我的猜测是 tagname字段期望所有 tagname s 为 ArrayCollection 或 Collection 对象格式。我不确定是否有什么具体区别。

但是,我仍然不知道如何在表单中传递已经持久化的类别对象。

这是 categorynametags CategoryType 中的字段:
    $builder->add('categoryname', EntityType::class, array(
'class' => 'AppBundle:Category',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.id', 'ASC');
},
'choice_label' => 'categoryname',
'expanded' => false,
'multiple' => false,
'label' => 'Choose Category',
));
$builder->add('tags', CollectionType::class, array(
'entry_type' => TagType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
));

这里是嵌入式 tagname TagType 中的字段:
    $builder->add('tagname', EntityType::class, array(
'class' => 'AppBundle:Tag',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('t')
->orderBy('t.id', 'ASC');
},
'choice_label' => 'tagname',
'expanded' => false,
'multiple' => true,
'label' => 'Choose Tags',
));

有任何想法吗?

最佳答案

尝试摆脱 'multiple' => true以嵌入形式。这对我有用。

关于symfony - 无法转换属性路径 "tagname"的值。需要 Doctrine\Common\Collections\Collection 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523140/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com