Nae*_*yth 3 php symfony doctrine-orm fosuserbundle
我有我的UserBundle扩展了FOSUserBundle并且工作正常.但现在,我想创建具有différents属性的多个用户实体.但问题是当我创建我的用户实体时,他扩展了我的主要用户实体,如下所示:
class User extends BaseUser
{
protected $id;
// The main user class who extends FOSUser entity
}
class UserB extends User
{
//
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我有一个错误:`
必须保护MyApp\UserBundle\Entity\UserB :: $ id的访问级别(如MyApp\UserBundle\Entity\User类).
当我在UserB实体中创建受保护的ID时,我有:
PHP致命错误:无法重新声明MyApp\UserBundle\Entity\UserB :: $ id.
并且,为了完成,我无法删除我的用户实体中的id少返回一个Doctrine错误:
[Doctrine\ORM\Mapping\MappingException]
没有为实体'MTS\UserBundle\Entity\User'指定标识符/主键.每个实体必须具有标识符/主键.
有人可以帮帮我吗?
编辑:问题解决了.我的代码:
/**
* MTS\UserBundle\Entity\User
*
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"userfb" = "UserFB"})
*/
abstract class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $type
*/
private $type;
}
/**
* @ORM\Table()
* @ORM\Entity()
*/
class UserB extends User
{
// My variables
}
Run Code Online (Sandbox Code Playgroud)
你的问题似乎是缺乏注释.
通过从我的工作代码中删除它,我能够复制您的'Every Entity必须有标识符/主键'错误消息:
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
Run Code Online (Sandbox Code Playgroud)
我的作品:
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8766 次 |
| 最近记录: |