我正在尝试使用FOS_UserBundle来管理我的用户,但每次尝试更新数据库
php app/console doctrine:schema:update --force
我收到以下错误:
字段或标识符列映射中实体上的列'username'的重复定义。 fos用户包
当我注释掉用户名时,也会发生'电子邮件'。
我的用户类实际上非常基本:
namespace My\MyBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length="100")
*/
protected $username;
/**
* @ORM\Column(type="string", length="100")
*/
protected $name;
/**
* @ORM\Column(type="string", length="100")
*/
protected $firstname;
/**
* @ORM\Column(type="string", length="150")
*/
protected $email;
}
我错过了什么吗?
答案 0 :(得分:13)
您的My\MyBundle\Entity\User
扩展了FOS\UserBundle\Entity\User
,后者又扩展了FOS\UserBundle\Model\User
,其中已有$username
字段。它还有一个$email
字段。因此,您只需要从班级中删除$username
和$email
字段。
答案 1 :(得分:10)
使用FOS \ UserBundle \ Model \ User扩展,而不是FOS \ UserBundle \ Entity \ User类。您应该始终使用Model扩展,而不是Entity。
答案 2 :(得分:4)
对我来说,它通过删除列注释来实现。
select substring(a.data, 1, patindex('%[^0-9-]%', a.data)-1)
from (
SELECT substring(data, patindex('%[0-9]%', data), len(data)) as data
FROM Table X
) a
您可以使用 @ORM \ AttributeOverrides 到User或BaseUser类来覆盖BaseUser的注释。 例如:
/**
* @ORM\Column --> remove this line!
*/
protected $password;