[SYMFONY2]Relacion OneToOne referenciando la misma...

m3l0

buenas, tengo que crear una entidad para registrar familias, que estarían formadas por dos usuarios, ademas de los dos miembros la entidad tendría un parámetro para guardar el numero de miembros de la familia, pero me encuentro con que no se muy bien como hacerlo

esto es lo que tengo:

class TrFamilia
{
    /**
     * @var integer
     * 
     * @ORM\Column(name="ID_familia", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

/**
 * @ORM\OneToOne(targetEntity="TExpedientes", inversedBy="familia")
 * @ORM\JoinColumn(name="fk_expediente1", referencedColumnName="ID_expediente")
 */
private $miembro1;

/**
 * @ORM\OneToOne(targetEntity="TExpedientes", inversedBy="familia")
 * @ORM\JoinColumn(name="fk_expediente2", referencedColumnName="ID_expediente")
 */
private $miembro2;

/**
 * @ORM\Column(name="miembros", type="integer", nullable=false)
 */
private $miembros;

}

y en el "usuario"

	
/**
* @ORM\OneToOne(targetEntity="TrFamilia")
* @ORM\JoinColumn(name="fk_familia", referencedColumnName="ID_familia")
*/
private $familia;

symfony me dice que la entidad esta mal mappeada por no tener el inversedby y no estoy muy seguro de como hacer la entidad.

Cobre

Cabe la posibilidad que puedas hacer una relacion entre miembros y familia de One-To-Many y para saber el numero de miembros sean con

count($miembros)

??

1 respuesta
m3l0

#2 el numero de miembros lo cojo de parámetro por hijos y tal que no estarían registrados.
la otra opción que tengo es hacerla como tu dices pero no se si es lo mas optimo.

MrTurbo

Así lo tengo yo en una entidad "categoría" con self-referencing para padre-hijo (categoría - subcategorías)

       class Categoria
    {
        /**
        * @ORM\Id
        * @ORM\Column(type="integer")
        * @ORM\GeneratedValue
        */
        protected $id_categoria;

    /** @ORM\Column(type="string", length=50) */
    protected $nombre;

    /**
    * 0 -> Padre   
    * 1 -> hijo
    * @ORM\Column(type="integer")
    */
    protected $nivel;

    /** @ORM\Column(type="string", length=255) */
    protected $slug0;

    /** @ORM\Column(type="string", length=255) */
    protected $slug1;

    /** @ORM\Column(type="string", length=255) */
    protected $titulo;

    /** @ORM\Column(type="string", length=255) */
    protected $title;

    /** @ORM\Column(type="text") */
    protected $keywords;

    /** @ORM\Column(type="text") */
    protected $description;

    /** @ORM\Column(type="boolean") */
    protected $unico;


    // One-To-Many, Self-referencing
    /**
    *  @ORM\OneToMany(targetEntity="Categoria", mappedBy="padre")
    */
    private $hijo;

    /**
    * @ORM\ManyToOne(targetEntity="Categoria", inversedBy="hijo")
    * @ORM\JoinColumn(name="padre_id", referencedColumnName="id_categoria")
    */
    private $padre;

Usuarios habituales

  • MrTurbo
  • m3l0
  • Cobre