Pregunta

Tengo mi UserBundle que extiende el FosuserBundle y funciona bien. Pero ahora, quiero crear múltiples entidades de usuarios con propiedades de Différents. Pero el problema es cuando creo mi entidad de usuario que extiende mi entidad de usuario principal de esta manera:

class User extends BaseUser
{
    protected $id;
    // The main user class who extends FOSUser entity
}

class UserB extends User
{
    //
}

Cuando hago esto, tengo un error: `

El nivel de acceso a MyApp userBundle entity userb :: $ id debe protegerse (como en la clase myApp userBundle entity user).

Y cuando creo una identificación protegida en mi entidad userb, tengo esto:

Error fatal de PHP: no puede redeclare myApp userBundle entity userb :: $ id.

Y para terminar, no puedo eliminar la ID en mi entidad de usuario menos devolver un error de doctrina:

Doctrine Orm Mapping MappingException
Ningún identificador/clave primaria especificada para la entidad 'mts userbundle entity user'. Cada entidad debe tener un identificador/clave primaria.

Puede ayudarme alguien ?

Editar: Problema resuelto. Mi código :

/**
 * 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
}
¿Fue útil?

Solución

Tu problema parece ser la falta de anotación.

Pude replicar su mensaje de error 'cada entidad debe tener un identificador/clave principal' eliminando esto de mi código de trabajo:

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */

Las obras para mi:

 /**
 * @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
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top