一对多关系在保存时抛出异常

时间:2015-01-29 09:38:48

标签: symfony

我有两个人。 “机构”和“用户”。该机构与用户有着密切关系。我创建一个表单“InstitutionType”,如果我想保存一个新的机构,“handleReqeust($ request)”抛出此异常。

Neither the property "users" nor one of the methods "addUser()"/"removeUser()", "setUsers()", "users()", "__set()" or "__call()" exist and have public access in class "App\UserBundle\Entity\Institution".  

实体用户

/**
 * @ORM\ManyToOne(targetEntity="Institution", inversedBy="users")
 * @ORM\JoinColumn(name="institution_id", referencedColumnName="id")
 */
protected $institution;

public function setInstitution(\App\UserBundle\Entity\Institution $institution = null)
{
    $this->institution = $institution;

    return $this;
}

public function getInstitution()
{
    return $this->institution;
}

实体机构

/**
 * @ORM\OneToMany(targetEntity="App\UserBundle\Entity\User", mappedBy="institution")
     */
    protected $users;

    public function addUser(\App\UserBundle\Entity\User $users)
    {
        $this->users[] = $users;

        return $this;
    }

    public function removeUser(\Ebm\UserBundle\Entity\User $users)
    {
        $this->users->removeElement($users);
    }

    public function getUsers()
    {
        return $this->users;
    }

InstitutionType

$users = $this->entityManager->getRepository('AppUserBundle:User')->findByIsActive(true);

 ->add('users', 'entity', array(
                    'label'  => 'responsibleperson',
                    'attr' => array(),
                    'class' => 'AppUserBundle:User',
                    'choices' => $users,
                    'multiple' => false,
                    'expanded' => false,
                    'empty_value' => '----------------')
                )

有人可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

addUser重命名为addUsers,将removeUser重命名为removeUsers

Symfony2 / Doctrine显然不知道单数/复数单词,并且无法猜测在users集合中添加单个条目会在语义上更正确地调用addUser() addUsers

请注意,您始终可以使用控制台命令doctrine:generate:entities AcmeDemoBundle:Institution在实体类中生成缺少的字段。

如果这没有帮助,您需要确保在表单类型中使用相同的表示法,例如在实体配置中(注释,yml或xml)。