我有一个简单的UserInterface实体:
function getRoles()
{
return $this->roles->toArray();
}多到多的角色实体接口关系
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"})
*/
protected $roles;当我尝试使用form管理用户角色时
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('roles');
}Symfony返回一个错误:
“Doctrine\Common\Collection\Collection”、"array“类型的预期参数给定
我知道返回数组的实体用户的getRoles方法中存在错误,但我也知道getRoles是接口的一种方法,必须返回数组!
有人有好的解决办法吗?
发布于 2012-08-30 15:47:46
您有两个getRoles函数:
因为这两个函数不能被调用相同,而且它们不能是相同的函数,因为它们需要返回不同的类型,而且由于第一个函数需要遵循接口,所以我建议您更改第二个函数的名称。因为这需要反映属性的名称,所以您应该更改这个名称。
所以,你需要做这样的事情:
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"})
*/
protected $userRoles;
/* interface */
function getRoles()
{
return $this->userRoles->toArray();
}
/*getter*/
function getUserRoles() {
return $this->userRoles;
}然后
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('userRoles');
}https://stackoverflow.com/questions/12200507
复制相似问题