jeb*_*nch 5 php doctrine-orm fosuserbundle symfony-2.1
我使用Symfony 2.1 RC1与FOSUserbundleWindows服务器上运行PHP 5.3.13.
我已按照此处的说明进行操作, 但Doctrine不会在数据库中为从基本FOS User类继承的属性创建字段(仅限我的类中的字段).
尝试使用FOS登录表单登录会产生错误:
Unrecognized field: usernameCanonical
Run Code Online (Sandbox Code Playgroud)
我有以下Doctrine配置:
# 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
Run Code Online (Sandbox Code Playgroud)
FOSUserBundle配置如下所示:
fos_user:
db_driver: orm
firewall_name: main
user_class: SP\PickList\UserBundle\Entity\User
Run Code Online (Sandbox Code Playgroud)
我的用户实体:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助,
James Bench
小智 17
看来你正在混合使用ORM和ODM的指令,如果按照你的配置使用Doctrine ORM,你的User类必须扩展FOS\UserBundle\Entity\User,尝试将use语句改为
use FOS\UserBundle\Entity\User as BaseUser;
Run Code Online (Sandbox Code Playgroud)