質問

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
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top