Doctrine不映射FOSUserBundle User类的字段 [英] Doctrine doesn't map fields from FOSUserBundle User class

查看:116
本文介绍了Doctrine不映射FOSUserBundle User类的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在运行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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆