Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Mostrar todas las entidades hijas de una entidad madre en Twig

6 de noviembre de 2016

Hola a toda la comunidad, estoy aprendiendo a usar SF2 y cada tanto tengo alguna duda, en esta ocasión se me presenta el siguiente problema:

Tengo una entidad madre llamada Persona, que posee una entidad hija llamada Usuario (relación uno a uno). Puede existir una persona que no posea usuario pero no puede existir un usuario que no este relacionado con una persona (el sistema tiene un listado de personas que no necesariamente deben tener un usuario en la AppWeb).

Ahora solo tengo definido lo siguiente en la entidad usuario:

/**
 * @ORM\OneToOne(targetEntity="Person")
 * @ORM\JoinColumn(name="person_id", referencedColumnName="id")
 * @Assert\Type("MSG\PersonBundle\Entity\Person")
 */
private $person;
 
/**
 * @param MSG\PersonBundle\Entity\Person $person
 * @return User
 */
public function setPerson(\MSG\PersonBundle\Entity\Person $person) {
    $this->person = $person;
 
    return $this;
}
 
/**
 * @return MSG\PersonBundle\Entity\Person 
 */
public function getPerson() {
    return $this->person;
}

Cuando muestro la información de la persona en un plantilla de Twig, quiero que verifique si la persona posee un usuario creado o no, si lo posee debe mostrar la posibilidad de visualizar los datos del usuario y si no posee debe dar la opción de generarle un usuario.

Entiendo que podría tener una solución a nivel del controlador que renderiza la vista de la persona, haciendo la consulta y pasando una variable con la información adecuada, pero quiero ver si no hay otra forma más eficiente de hacerlo. Quizás doctrine ya sabe que persona tiene o no un usuario creado ya que la entidad usuario está relacionada con la entidad persona.

Espero haber sido claro con el problema. Desde ya muchas gracias por sus sugerencias y/o comentarios.

Slds.


Respuestas

#1

Doctrine resuelve las relaciones automáticamente, así que no tienes que hacer nada para conseguir lo que quieres. En tu plantilla Twig puedes hacer directamente:

{% if person.user %}
 
  La persona tiene un usuario asociado.
 
{% elseif %}
 
  No hay un usuario asociado.
 
{% endif %}

@javiereguiluz

7 noviembre 2016, 8:45
#2

Gracias Javier. Funcionó a la perfección. Que potente que es este framework.

@gapiazza

10 noviembre 2016, 5:01