FOSUserBundleを拡張して正常に動作するUserBundleがあります。しかし今、私は異なるプロパティを持つ複数のユーザーエンティティを作成したいと思います。しかし、問題は、メインのユーザーエンティティを次のように拡張するユーザーエンティティを作成するときです。
class User extends BaseUser
{
protected $id;
// The main user class who extends FOSUser entity
}
class UserB extends User
{
//
}
これを行うと、エラーが発生します: `
MyApp \ UserBundle \ Entity \ UserB :: $ idへのアクセスレベルを保護する必要があります(クラスMyApp \ UserBundle \ Entity \ Userのように)。
そして、UserBエンティティで保護されたIDを作成すると、次のようになります。
PHPの致命的なエラー:MyApp \ UserBundle \ Entity \ UserB ::$idを再宣言できません。
そして最後に、Userエンティティの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
}