Symfony Can';t在创建JoinTable(1-n-1)的实体后,向ManyToMany添加值

Symfony Can';t在创建JoinTable(1-n-1)的实体后,向ManyToMany添加值,symfony,Symfony,起初,我在用户和俱乐部实体之间有很多关系。 现在,我想在JoinTable(users\u clubs)中添加一列,所以我必须创建第三个实体UserClub。我运行了条令:schema:update——force命令,一切似乎都很好 我的ProfileForm设置有如下实体字段: ->add( 'clubs', 'entity', array( 'class' => 'AcmeMainBundle:Club', 'property' => 'name',

起初,我在用户和俱乐部实体之间有很多关系。 现在,我想在JoinTable(users\u clubs)中添加一列,所以我必须创建第三个实体UserClub。我运行了条令:schema:update——force命令,一切似乎都很好

我的ProfileForm设置有如下实体字段:

->add(
  'clubs', 'entity', array(
    'class' => 'AcmeMainBundle:Club',
    'property' => 'name',
    'multiple' => 'true',
    'query_builder' => function(EntityRepository $er) 
    {
      return $er->createQueryBuilder('club')
        ->orderBy('club.name', 'ASC');
    },
  )
)
表单呈现良好,但在保存表单时出现以下错误:

Catchable Fatal Error: Argument 1 passed to Acme\UserBundle\Entity\User::addClub() must be  an instance of Acme\MainBundle\Entity\UserClub, instance of Acme\MainBundle\Entity\Club given in /src/Acme/UserBundle/Entity/User.php
用户实体添加俱乐部功能:

/**
 * Add clubs
 *
 * @param UserClub $userClub
 * @return User
 */
public function addClub(UserClub $userClub)
{
    if (!$this->userClubs->contains($userClub)) 
    {
        $this->userClubs->add($userClub);
        $userClub->setUser($this);
    }

    return $this;
}
你能发布你的用户实体吗? 您的用户俱乐部是否为您的用户实体中的nammed user_俱乐部

如果是:

->add(
  'userclubs', 'entity', array(....
不是:


我按照这个指南解决了这个问题:

我更改了addClub函数并添加了setClubs函数,该函数负责在新的UserClub实体中设置club和用户

->add(
  'userclubs', 'entity', array(....
->add(
  'clubs', 'entity', array(