Fosuserbundleのユーザーエンティティをどのように拡張しますか?
-
28-10-2019 - |
質問
Fosuserbundleを拡張し、正常に動作するユーザーバンドルがいます。しかし、今では、異なるプロパティを備えた複数のユーザーエンティティを作成したいと考えています。しかし、問題は、このようなメインユーザーエンティティを拡張するユーザーEnttityを作成するときです。
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 users user)。
そして、userbエンティティで保護されたIDを作成するとき、私はこれを持っています:
PHP致命的なエラー:MyApp userbundle entity userb :: $ idをredclareできません。
終了するには、ユーザーエンティティのIDを削除することはできません。
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
}
解決
あなたの問題は注釈が不足しているように見えます。
私はあなたの「すべてのエンティティが識別子/プライマリキー」エラーメッセージを私の作業コードから削除することにより、識別子/プライマリキー」エラーメッセージを持っている必要があります。
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
私のための作品:
/**
* @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
}
}
所属していません StackOverflow