Duda Doctrine, OneToMany y ArrayCollection()

Tunnecino

Buenas,

Estoy usando Doctrine 2 + Laravel para un proyecto (se que si uso Laravel debería de tirar de Eloquent, pero tengo mis razones para usar Doctrine) y estoy con el diseño de las entidades.

Tengo la entidad Users, y una asociación OneToMany con la entidad UsersLogins:

/**
* @OneToMany(targetEntity="UsersLogins", mappedBy="user", cascade={"remove"}) 
* @JoinColumn(name="logins", referencedColumnName="id") 
**/
protected $logins;

Bien, la relación funciona correctamente y tal, pero para poder trabajar con varios resultados, tengo que hacer una iteración a $user->getField('logins') (getField es un Getter que he hecho). No sé si esta es la mejor forma de hacerlo, se que está ArrayCollection(); pero solo lo puedo iniciar en el __construct();, que solo se ejecuta al iniciar la class de la entidad, pero al buscar usando el facade Doctrine::find('Users, $id); por ejemplo, el __construct no se me inicializa.

Como lo tengo ahora funciona, la duda era simplemente si era posible hacerlo de otro modo, más que nada por que para acceder a las variables dentro de, por ejemplo, un foreach(); tengo que guardar las propiedades en la entidad como public, a diferencia del resto que están protected.

Puede que este thread sea una tontería y una liada de cabeza, pero llevo ya varios días a piñón con esto, y hay cosas de las que no me empano.

Tunnecino

Además, tengo otra duda. De primeras, para no usar bigInt, había pensado en tirar de int unsigned, lo que pasa, que rompería el ORM, ya que no todos los entornos de DB aceptan esto.

He leído, y aconsejan en muchos sitios (sobretodo en stackoverflow, que es donde he estado mirando) guardar el campo en decimal con precision 0, pero no sé que impacto tendrá esto en cuanto al rendimiento.

Usuarios habituales

  • Tunnecino