2011-12-06 8 views
3

FOSUserBundle을 확장하고 잘 작동하는 UserBundle이 있습니다. 하지만 이제는 differents 속성을 가진 여러 사용자 엔터티를 만들길 원합니다.FOSUserBundle의 사용자 엔터티를 확장하는 방법은 무엇입니까?

나는이, 내가 오류가있어 않습니다
class User extends BaseUser 
{ 
    protected $id; 
    // The main user class who extends FOSUser entity 
} 

class UserB extends User 
{ 
    // 
} 

:`

Access level to MyApp\UserBundle\Entity\UserB::$id must be protected (as in class MyApp\UserBundle\Entity\User).

을 때 나는 이런 식으로 내 주요 사용자 개체를 확장 내 사용자 enttity를 만들 때 는하지만 문제는

PHP Fatal error: Cannot redeclare MyApp\UserBundle\Entity\UserB::$id.

그리고 완료, 내가 덜 돌려 내 사용자 개체의 교리 오류 ID를 삭제할 수 없습니다 : 내 사용자 B의 실체에 보호 된 ID를 만들어이이

[Doctrine\ORM\Mapping\MappingException]
No identifier/primary key specified for Entity 'MTS\UserBundle\Entity\User'. Every Entity must have an identifier/primary key.

누군가 나를 도울 수 있습니까?

편집 : 문제가 해결되었습니다. 내 코드 :

/** 
* 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 
} 

답변

5

주석이 부족한 것 같습니다. 나를 위해

/** 
* @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 
    } 
} 
+0

고맙습니다을

나는 나의 작업 코드에서이를 제거하여 오류 메시지 '식별자/기본 키가 있어야합니다 모든 엔티티'당신을 복제 할 수 있었다 당신의 대답을 위해. Finaly, 나쁜 상속으로 인한 제 문제. 내 코드 편집을보십시오. – Naelyth