Foros del Web » Programando para Internet » PHP » Symfony »

OneToOne, usuario y persona

Estas en el tema de OneToOne, usuario y persona en el foro de Symfony en Foros del Web. Muy buenas tardes tengo dos Entidades de estas dos tablas: Usuario.........................................Pe rsona id_persona pk y fk....................... id_persona pk usuario.........................................no mbre contraseña....................................apel lido ...... Empiezo a ...
  #1 (permalink)  
Antiguo 22/07/2015, 15:56
 
Fecha de Ingreso: julio-2015
Mensajes: 15
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta OneToOne, usuario y persona

Muy buenas tardes tengo dos Entidades de estas dos tablas:
Usuario.........................................Pe rsona
id_persona pk y fk....................... id_persona pk
usuario.........................................no mbre
contraseña....................................apel lido
......
Empiezo a hacer mi proyecto sobre una base de datos ya creada e inalterable.
E creado el login pero no puedo obtener el nombre del usuario logueado
en mi controlador:

$usuario = $this->get('security.context')->getToken()->getUser();
return $this->render('UsuarioBundle:Default:index.html.twig', array('nombre' => $usuario->getIdPersona()->getNombre()));

pero me sale : Error: Call to a member function getNombre() on a non-object
pero si envío solamente $usuario->getIdPersona(), como es una llave foránea lo normal es que envíe un objeto Persona, pero se comporta como PK y envía el ID

el codigo autogenerado de las entity desde el DB es el sig:

*entity Usuario*
/**
* @var \Persona
*
* @ORM\Id
* @ORM\Column(name="id_persona", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\OneToOne(targetEntity="Persona")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_persona", referencedColumnName="id_persona")
* })
*/
private $idPersona;

*entiy Persona*
/**
* @var integer
*
* @ORM\Column(name="id_persona", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="persona_id_pe rsona_seq", allocationSize=1, initialValue=1)
*/
private $idPersona;


trato de explicarlo lo mas que puedo por que es muy importante, cualquier respuesta o link sera muy apreciado y agradecido desde ya, gracias.
  #2 (permalink)  
Antiguo 24/07/2015, 10:04
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: OneToOne, usuario y persona

El problema que tienes es por que tu quieres establecer la relación desde los id. Tienes que crea otra propiedad que solo debe de tener la relación que quieres con la otra entidad.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 27/07/2015, 09:01
 
Fecha de Ingreso: julio-2011
Ubicación: Bogotá
Mensajes: 34
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: OneToOne, usuario y persona

Mira lo que sucede es que debes acceder al objeto de la seguridad y de ahí por doctrine te mueves a la entidad que deseas mostrar el campo.

Por ejemplo:

//Usando el atajo para acceder al usuario

$usuario = $this->getUser()

//Ahora para acceder al atributo de la otra entidad

$otro_atributo = $this->getUser()->getIdRelacion()->getNombreCampo();

Esto es todo! Éxitos!
  #4 (permalink)  
Antiguo 29/07/2015, 16:41
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: OneToOne, usuario y persona

*entity Usuario*
/**
* @var \Persona
*
* @ORM\Id
* @ORM\OneToOne(targetEntity="Persona")
* @ORM\JoinColumn(name="id_persona", referencedColumnName="id_persona")
*/
private $persona;
  #5 (permalink)  
Antiguo 04/09/2015, 12:22
Avatar de cbretana  
Fecha de Ingreso: junio-2013
Ubicación: Pinar del Rio
Mensajes: 55
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: OneToOne, usuario y persona

Lo que sucede es que estas estableciendo la relacion directamente con una columna de la db, para hacer esto tienes que hacer una relacion bidireccional, donde ambos campos que existen en la entidad son propiedades de navegacion, y las inicializas en el constructor de la entidad como ArrayCollection, puedes conocer mas de este tema en este pdf: http://www.cheat-sheets.org/saved-co...-Sheet-1.1.pdf, espero que te sirva, saludos.
__________________
.::Una imagen vale mas que mil palabras::.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:36.