Crear objeto symfony N:N

Merkury

Buenas tardes gentecilla del dev.

Llevo varios días atascado con una cosilla en symfony y por mucho que le doy vueltas leo y pruebo, no consigo solucionarlo a ver si alguien por aquí puede echarme un cable.

Tengo dos bonitas entidades, la entidad User y la entidad Empresa.

Cada usuario puede pertenecer a varías empresas y cada empresa puede tener varios usuarios con lo que se nos generá una bonita N:N bidireccional (con su respectiva tabla intermedia), aquí os dejo el código de la misma


/*Relación en User*/

/**
     *
     * @ORMManyToMany(targetEntity="MGAdminBundleEntityEmpresa", inversedBy="users")
     * @ORMJoinTable(name="user_empresa")
     */
    public $empresas;

   public function __construct()
    {
        parent::__construct();
        $this -> empresas = new ArrayCollection();
    }

/*Relación en empresa*/

/**
     * @ORMManyToMany(targetEntity="MGUserBundleEntityUser", mappedBy="empresas")
     */
    private $users;


  /**
     * Constructor
     */
    public function __construct()
    {
        $this->users = new ArrayCollection();
    }

La cosa es que teniendo esto, cuando creo un formulario para agregar usuario, si no le pasas empresa perfecto el usuario se crea bien, pero cuando pasas la empresa en la creación del usuario, si le pasas un objeto tipo entidad pide un array collection y si le pasas un array collection pide un tipo entidad, la verdad que me estoy volviendo un poco gilipoyas con este tema, a ver si alguien me puede echar una mano.

EDITO -->

Ya lo he logrado solucionar, resulta que la definir ArrayCollections para las relaciones ManyToMany con Doctrine por fuerza el widget para la asignación de la relación ha de ser un selector multiple, os dejo el ejemplo por si a alguien más le pasa:


->add('empresas', 'entity', array(
            'class' => 'MGAdminBundle:Empresa',
            'property' => 'nombre',
            'multiple' => true))
        ;
1
Cobre

En stackoverflow suelen responder bastante la gente, yo y algunos compañeros del curro lo utilizan y suele sacar del apuro, pq aqui por lo que parece nadie responde a las consultas de symfony xd

1 respuesta
c0rs0

Gracias Merkury, me lo guardo en favoritos por sí se me da el caso. Imagino que tiene que ser un selector múltiple porque espera una colección de resultados al tratarse de una relación ManyToMany. Pero está bien saberlo porque seguro que en algún momento me encuentro en una de éstas.

1 respuesta
Merkury

#2 En stackoverflow esta duda esta posteada y no hay respuesta.

#3 Si, pero la historia de todo es que tu al pasar un tipo entity en el selector por defecto el hijo puta te saca un select y eso hace que explote, y además si luego en el multiple le mandas una sola opción se la traga igual, en fin que es un poco enrevesado la verdad.

1 respuesta
elkaoD

#4 "En stackoverflow esta duda esta posteada y no hay respuesta."

Sounds familiar...

1 respuesta
Merkury

#5 Bueno puntualizo, hay respuestas pero no sirven de nada.

Usuarios habituales

  • Merkury
  • elkaoD
  • c0rs0
  • Cobre