The column id must be mapped to a field in class ...\Entity\Usuarios since it is referenced by a join column of another class.

570 views
Skip to first unread message

Fátima Dorta

unread,
Aug 29, 2013, 6:44:43 PM8/29/13
to symfo...@googlegroups.com
Buenas noches a todos!
Estoy haciendo una aplicación donde necesito gestionar usuarios (ROLE_USER y ROLE_ADMIN)

La entidad USUARIOS es:

<?php

namespace Aplicacion\AplicacionBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\Common\Collections\ArrayCollection;

use Doctrine\ORM\Mapping as ORM;

/**
 * Aplicacion\AplicacionBundle\Entity\Usuarios
 *
 * @ORM\Table(name="usuarios")
 * @ORM\Entity
 */
class Usuarios implements UserInterface,\Serializable
{
     /**
     * @inheritDoc
     */
    public function getUsername()
    {
        return $this->login;
    }

    /**
     * @inheritDoc
     */
    public function getSalt()
    {
        return false;
    }

     /**
     * @inheritDoc
     */
    public function eraseCredentials()
    {
        return false;
    }

    /**
     * @see \Serializable::serialize()
     */
    public function serialize()
    {
        return serialize(array(
            $this->id,
        ));
    }

    /**
     * @see \Serializable::unserialize()
     */
    public function unserialize($serialized)
    {
        list (
            $this->id,
        ) = unserialize($serialized);
    }

    /**
     * @var integer
     *
     * @ORM\Column(name="idusuario", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    private $nombre;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=100)
     */
    private $email;

    /**
     * @var integer
     *
     * @ORM\Column(name="telefono", type="integer")
     */
    private $telefono;

    /**
     * @var string
     *
     * @ORM\Column(name="login", type="string", length=10)
     */
    private $login;

    /**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=10)
     */
    private $password;

    /**
     * @var integer
     *
     * @ORM\Column(name="num_asociado", type="integer")
     */
    private $numAsociado;

    /**
     * @var string
     *
     * @ORM\Column(name="apellidos", type="string", length=255)
     */
    private $apellidos;

    /**
     * @var string
     *
     * @ORM\Column(name="dni", type="string", length=9)
     */
    private $dni;

    /**
     * @var string
     *
     * @ORM\Column(name="web", type="string", length=100)
     */
    private $web;

    /**
     * @var integer
     *
     * @ORM\Column(name="activado", type="smallint")
     */
    private $activado;

    /**
     * @ORM\ManyToMany(targetEntity="Aplicacion\AplicacionBundle\Entity\Grupos", inversedBy="usuarios")
     */  
    private $idgrupo;

    /**
     * @var integer
     *
     * @ORM\Column(name="idusuario_activante", type="integer")
     */
    private $idusuarioActivante;

    /**
     * @var \Datetime $fechaActivacion
     *
     * @ORM\Column(name="fecha_activacion", type="datetime")
     */
    private $fechaActivacion;

    /**
     * @var integer
     *
     * @ORM\Column(name="informar", type="smallint")
     */
    private $informar;
    /**
     * Set id
     *
     * @param integer $id
     * @return Usuarios
     */
    public function setId($id)
    {
        $this->id = $id;
    
        return $this;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Usuarios
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    
        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return Usuarios
     */
    public function setEmail($email)
    {
        $this->email = $email;
    
        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set telefono
     *
     * @param integer $telefono
     * @return Usuarios
     */
    public function setTelefono($telefono)
    {
        $this->telefono = $telefono;
    
        return $this;
    }

    /**
     * Get telefono
     *
     * @return integer 
     */
    public function getTelefono()
    {
        return $this->telefono;
    }

    /**
     * Set login
     *
     * @param string $login
     * @return Usuarios
     */
    public function setLogin($login)
    {
        $this->login = $login;
    
        return $this;
    }

    /**
     * Get login
     *
     * @return string 
     */
    public function getLogin()
    {
        return $this->login;
    }

    /**
     * Set password
     *
     * @param string $password
     * @return Usuarios
     */
    public function setPassword($password)
    {
        $this->password = $password;
    
        return $this;
    }

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * Set numAsociado
     *
     * @param integer $numAsociado
     * @return Usuarios
     */
    public function setNumAsociado($numAsociado)
    {
        $this->numAsociado = $numAsociado;
    
        return $this;
    }

    /**
     * Get numAsociado
     *
     * @return integer 
     */
    public function getNumAsociado()
    {
        return $this->numAsociado;
    }

    /**
     * Set apellidos
     *
     * @param string $apellidos
     * @return Usuarios
     */
    public function setApellidos($apellidos)
    {
        $this->apellidos = $apellidos;
    
        return $this;
    }

    /**
     * Get apellidos
     *
     * @return string 
     */
    public function getApellidos()
    {
        return $this->apellidos;
    }

    /**
     * Set dni
     *
     * @param string $dni
     * @return Usuarios
     */
    public function setDni($dni)
    {
        $this->dni = $dni;
    
        return $this;
    }

    /**
     * Get dni
     *
     * @return string 
     */
    public function getDni()
    {
        return $this->dni;
    }

    /**
     * Set web
     *
     * @param string $web
     * @return Usuarios
     */
    public function setWeb($web)
    {
        $this->web = $web;
    
        return $this;
    }

    /**
     * Get web
     *
     * @return string 
     */
    public function getWeb()
    {
        return $this->web;
    }

    /**
     * Set activado
     *
     * @param integer $activado
     * @return Usuarios
     */
    public function setActivado($activado)
    {
        $this->activado = $activado;
    
        return $this;
    }

    /**
     * Get activado
     *
     * @return integer 
     */
    public function getActivado()
    {
        return $this->activado;
    }

    /**
     * Set idgrupo
     *
     * @param integer $idgrupo
     * @return Usuarios
     */
    public function setIdgrupo($idgrupo)
    {
        $this->idgrupo = $idgrupo;
    
        return $this;
    }

    /**
     * Get idgrupo
     *
     * @return integer 
     */
    public function getIdgrupo()
    {
        return $this->idgrupo;
    }

/////////////////////////////////////////////////////////
// Para obtener los roles de ROLE_USER y ROLE_ADMIN
public function __construct()
    {
        $this->idgrupo = new ArrayCollection();
    }

    public function getRoles()
    {
        return $this->idgrupo->toArray();
    }
/////////////////////////////////////////////////////////

    /**
     * Set idusuarioActivante
     *
     * @param integer $idusuarioActivante
     * @return Usuarios
     */
    public function setIdusuarioActivante($idusuarioActivante)
    {
        $this->idusuarioActivante = $idusuarioActivante;
    
        return $this;
    }

    /**
     * Get idusuarioActivante
     *
     * @return integer 
     */
    public function getIdusuarioActivante()
    {
        return $this->idusuarioActivante;
    }

    /**
     * Set fechaActivacion
     *
     * @param \DateTime $fechaActivacion
     * @return Usuarios
     */
    public function setFechaActivacion($fechaActivacion)
    {
        $this->fechaActivacion = $fechaActivacion;
    
        return $this;
    }

    /**
     * Get fechaActivacion
     *
     * @return \DateTime 
     */
    public function getFechaActivacion()
    {
        return $this->fechaActivacion;
    }

    /**
     * Set informar
     *
     * @param integer $informar
     * @return Usuarios
     */
    public function setInformar($informar)
    {
        $this->informar = $informar;
    
        return $this;
    }

    /**
     * Get informar
     *
     * @return integer 
     */
    public function getInformar()
    {
        return $this->informar;
    }
/**
*
* @return string 
*/
public function __toString() {
return  strval($this->nombre) ;
}
}


La entidad GRUPOS es:

<?php
namespace Aplicacion\AplicacionBundle\Entity;
use Symfony\Component\Security\Core\Role\RoleInterface;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
 * Aplicacion\AplicacionBundle\Entity\Grupos
 *
 * @ORM\Table(name="grupos")
 * @ORM\Entity
 */
class Grupos
{
    /**
     *
     * @ORM\Column(name="idgrupo", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $id; //idgrupo
    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    private $nombre;
    /**
* @var string
*
     * @ORM\Column(name="rol", type="string", length=20, unique=true)
     */
    private $rol;
  /**
     * @ORM\ManyToMany(targetEntity="Aplicacion\AplicacionBundle\Entity\Usuarios", mappedBy="grupos")
     */
    private $usuarios;
    /**
     * Set id
     *
     * @param integer $id
     * @return Grupos
     */
    public function setId($id)
    {
        $this->id = $id;
    
        return $this;
    }
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Grupos
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    
        return $this;
    }
    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }
/**
     * @ORM\ManyToMany(targetEntity="Usuarios", mappedBy="idgrupo")
     */
    private $usuario;
    public function __construct()
    {
        $this->usuarios = new ArrayCollection();
    }
    /**
     * @see RoleInterface
     */
    public function getRol()
    {
        return $this->rol;
    }
/**
*
* @return string 
*/
public function __toString() {
return  strval($this->nombre) ;
}
}

El archivo security.yml es:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        Aplicacion\AplicacionBundle\Entity\Usuarios: plaintext
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
    providers:
        chain_provider:
            chain:
                providers: [in_memory, user_db, administradores]
        user_db:
             entity: { class: Aplicacion\AplicacionBundle\Entity\Usuarios , property: login}
        administradores:
             entity: { class: Aplicacion\AplicacionBundle\Entity\Usuarios , property: login}
        in_memory:
            memory:
                users:
                    admin: { password: 1234, roles: 'ROLE_ADMIN' }
      
    firewalls:
        admin:
            pattern: ^/admin
            http_basic: ~
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login_firewall:
            pattern:    ^/login
            anonymous:  ~
        secured_area:
            pattern:    ^/
            form_login:
                login_path:  /login
                check_path:  /check
                #default_target_path: default_security_target
            logout:
                path:   /logout
                target: /

    access_control:
        - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login2, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/inicio, roles: ROLE_USER }
        - { path: ^/admin, roles: ROLE_ADMIN }
    
    role_hierarchy:
        ROLE_ADMIN: [ROLE_USER]


Y me da el siguiente error cuando intenta hacer el check:

The column id must be mapped to a field in class Aplicacion\AplicacionBundle\Entity\Usuarios since it is referenced by a join column of another class.

¿Alguien sabe porqué puede ser? Estoy usando PHP: 5.4.7.

Gracias de antemano!!!



Reply all
Reply to author
Forward
0 new messages