我正在尝试学习如何使用Symfony2和FOSUserBundle进行注册。我一步一步地使用以下文档中提供的文档执行:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md但是当我尝试运行comman php app/console doctrine:schema:update --force
时,我收到此错误:
[Doctrine\ORM\Mapping\MappingException]
No identifier/primary key specified for Entity "Registration\BusinessBundle\Entity\BusinessUser"
sub class of "FOS\UserBundle\Model\User".
Every Entity must have an identifier/primary key.
如果我运行命令php app/console cache:clear
,我会收到同样的错误。我尝试手动删除缓存文件夹,但当我尝试更新doctrine架构时,再次出现相同的错误。
我的BusinessUser实体:
<?php
namespace Registration\BusinessBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="business_user")
*/
class BusinessUser extends BaseUser
{
/*
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
}
}
答案 0 :(得分:3)
由于您在stackoverflow中将此问题放了2次,因此我复制并粘贴了我的答案:
您的实体不包含使用Doctrine Annotation的PHP docblock注释。
Docblocks有两个星号,但它只是一个简单的评论。
更改您当前的代码
/*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
到
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
仅使用/ **才能通过Doctrine识别注释。
检查您的其他属性。