Doctrine不映射FOSUserBundle User类的字段 [英] Doctrine doesn't map fields from FOSUserBundle User class
问题描述
在运行PHP 5.3.13的Windows服务器上,我正在使用 Symfony 2.1 RC1
和 FOSUserbundle
p>
我已经遵循这里的说明,但是Doctrine不会在数据库中为从基础FOS User类继承的属性(仅包含我的类的字段)创建字段。
尝试使用FOS登录表单登录将产生错误:
无法识别的字段:usernameCanonical
我有以下的Doctrine配置:
#Doctrine配置
doctrine:
dbal:
驱动程序:%database_driver%
主机:%database_host%
端口:%database_port%
dbname: %database_name%
用户:%database_user%
密码:%database_password%
charset :UTF8
orm:
auto_generate_proxy_classes:%kernel.debug%
auto_mapping:true
而FOSUserBundle配置如下所示:
fos_user:
db_driver:orm
firewall_name:main
user_class:SP\PickList\UserBundle\Entity\User
我的用户实体:
命名空间SP \PickList\UserBundle\Entity;
使用Doctrine\ORM\Mapping作为ORM;
使用FOS\UserBundle\Document\User作为BaseUser;
/ **
* SP \PickList\UserBundle\Entity\User
*
* @ ORM\Table(name =fos_user )
* @ ORM\Entity
* /
类用户扩展BaseUser
{
/ **
* @var整数$ id
*
* @ ORM\Column(name =id,type =integer)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =AUTO )
* /
protected $ id;
/ **
*获取ID
*
* @return integer
* /
public function getId()
{
return $ this-> id;
}
}
感谢任何帮助,
James Bench
似乎您正在为ORM和ODM混合说明,如果您使用Doctrine ORM根据您的配置,您的用户类必须扩展 FOS\UserBundle\Entity\User
,尝试更改使用
语句为
使用FOS\UserBundle\Entity\User作为BaseUser;
I am using Symfony 2.1 RC1
and the FOSUserbundle
on a Windows server running PHP 5.3.13.
I have followed the instructions here but Doctrine doesn't create fields in the database for the properties inherited from the base FOS User class (only the fields from my class).
Trying to login using the FOS login form produces the error:
Unrecognized field: usernameCanonical
I have the following Doctrine configuration:
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
And the FOSUserBundle config looks like:
fos_user:
db_driver: orm
firewall_name: main
user_class: SP\PickList\UserBundle\Entity\User
My User entity:
namespace SP\PickList\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Document\User as BaseUser;
/**
* SP\PickList\UserBundle\Entity\User
*
* @ORM\Table(name="fos_user")
* @ORM\Entity
*/
class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
Thanks for any help,
James Bench
It seems you are mixing instructions for ORM and ODM, if you use Doctrine ORM as per your config, your User class must extend FOS\UserBundle\Entity\User
, try to change the use
statement as
use FOS\UserBundle\Entity\User as BaseUser;
这篇关于Doctrine不映射FOSUserBundle User类的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!