起初我在User和Club实体之间有一个ManyToMany关系。 现在,我想在JoinTable(users_clubs)中添加一列,因此我必须创建第三个实体UserClub。我运行了学说:schema:update --force命令,一切似乎没问题。
我的ProfileForm设置有一个Entity字段,如下所示:
->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
用户实体addClub功能:
/**
* 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;
}
答案 0 :(得分:0)
->add(
'clubs', 'entity', array(
'class' => 'AcmeMainBundle:Club',
'property' => 'name',
'multiple' => 'true',
'query_builder' => function(EntityRepository $er)
{
return $er->createQueryBuilder('club')
->orderBy('club.name', 'ASC');
},
)
)
您可以发布您的用户实体吗? 您的用户俱乐部是否在您的用户实体中被命名为用户俱乐部?
如果是:
->add(
'userclubs', 'entity', array(....
不是:
->add(
'clubs', 'entity', array(
答案 1 :(得分:0)
我按照本指南解决了这个问题:
http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html
我更改了我的addClub功能,并添加了一个setClubs功能,负责在新的UserClub实体中设置俱乐部和用户。