Php Symfony2提交实体类型的表单时出错(多对多关系)

Php Symfony2提交实体类型的表单时出错(多对多关系),php,forms,symfony,doctrine-orm,symfony-forms,Php,Forms,Symfony,Doctrine Orm,Symfony Forms,我在symfony2中创建了一个简单的多对多($post-->$category)关系,由于“entity”字段类型,我希望在我的表单生成器中使用该关系,现在使用multiple=false选项(默认值),尽管它是多对多的 这是我的邮政实体的一部分: /** * @var ArrayCollection * * @ORM\ManyToMany(targetEntity="Yeomi\PostBundle\Entity\Category", inversedBy="posts") */

我在symfony2中创建了一个简单的多对多($post-->$category)关系,由于“entity”字段类型,我希望在我的表单生成器中使用该关系,现在使用multiple=false选项(默认值),尽管它是多对多的

这是我的邮政实体的一部分:

 /**
 * @var ArrayCollection
 *
 * @ORM\ManyToMany(targetEntity="Yeomi\PostBundle\Entity\Category", inversedBy="posts")
 */
private $categories;



/**
 * Add categories
 *
 * @param \Yeomi\PostBundle\Entity\Category $categories
 * @return Post
 */
public function addCategory(\Yeomi\PostBundle\Entity\Category $category)
{
    $this->categories[] = $category;
    return $this;
}

/**
 * Remove categories
 *
 * @param \Yeomi\PostBundle\Entity\Category $categories
 */
public function removeCategory(\Yeomi\PostBundle\Entity\Category $category)
{
    $this->categories->removeElement($category);
}


/**
 * Get categories
 *
 * @return \Doctrine\Common\Collections\Collection 
 */
public function getCategories()
{
    return $this->categories;
}
这是我的帖子类型:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title', 'text')
        ->add('content', 'textarea')
        ->add('published', 'checkbox')
        ->add("categories", "entity", array(
            "class" => "YeomiPostBundle:Category",
            "property" => "name",
            "multiple" => false,
        ))
        ->add('published', 'checkbox')
        ->add('save', "submit")
    ;
}
这就是我得到的错误

500内部服务器错误-NoSuchPropertyException

它适用于multiple=true,但这不是我想要的,是不是因为关系是多对多的,所以我不得不将其设置为多实体字段

我已经清除了缓存,条令缓存,我已经重新生成了我的实体getter/setter,不知道我可能做错了什么


感谢您的帮助

由于

问题确实是因为manytomy关系(这实际上是有道理的,因为如果您有manytomy关系,您希望能够选择多个实体)

通过为整个
ArrayCollection
属性添加一个setter,可以使用
multiple=false

/**
 * Set categories
 * @param \Doctrine\Common\Collections\Collection $categories
 *
 * @return Post
 */
public function setCategories($categories)
{

    if(!is_array($categories))
    {
        $categories = array($categories);
    }
    $this->categories = $categories;

    return $this;
}

看看这个:谢谢!这里的多对多问题与
ManyToMany
关系和
multiple=false
问题完全相同,但提供的答案无助于解决错误
/**
 * Set categories
 * @param \Doctrine\Common\Collections\Collection $categories
 *
 * @return Post
 */
public function setCategories($categories)
{

    if(!is_array($categories))
    {
        $categories = array($categories);
    }
    $this->categories = $categories;

    return $this;
}