2016-09-25 2 views
0

У меня есть 2 объекта, InProveedorProducto, у которого есть поле id_producto и InOrdenCompraDetalle, в котором есть деталь заказа на поставку, включая поле id_producto. InProveedorProducto в таблице с id_producto, но также id_proveedor, это означает, что эта таблица содержит список продуктов для каждого провайдера.Как сохранить поле из отношений ManyToMany? Symfony2

Итак, моя форма ТИП:

class InOrdenCompraDetalleType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    protected $idProveedor; 

    protected $idEmpresaa; 

    public function __construct ($id_proveedor,$id_empresaa) 
    { 
     $this->idProveedor = $id_proveedor; 
     $this->idEmpresaa = $id_empresaa; 
    } 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('ordenCompra') 
      ->add('productoOc', 'entity', array(
       'class' => 'NivalInventarioBundle:InProveedorProducto', 
       'query_builder' => function (EntityRepository $er) { 
        return $er->createQueryBuilder('u') 
         ->where('u.idProveedor = '.$this->idProveedor) 
         ->orderBy('u.productoO', 'ASC'); 
       }, 
       'choice_label' => function ($displayname) { 
            return $displayname->getDisplayName();}, 
       'by_reference' => true, 
       'expanded' => false, 
       'placeholder' => 'Seleccione una opción', 
       'mapped' => true, 
       'multiple' => false, 
      )) 
      ->add('cantidad'); 
    } 

    /** 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'Nival\InventarioBundle\Entity\InOrdenCompraDetalle' 
     )); 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'nival_inventariobundle_inordencompradetalle'; 
    } 

} 

Моя сущность InProveedorProducto

class InProveedorProducto 
{ 

    /** 
    * @ORM\ManyToMany(targetEntity="InOrdenCompraDetalle", inversedBy="productoOc") 
    * @ORM\JoinTable(name="InCompraDetalleProveedorProducto") 
    */ 
    protected $producto; 

Моя сущность InOrdenCompraDetalle

lass InOrdenCompraDetalle 
{ 
    /** 
    * @ORM\ManyToMAny(targetEntity="InProveedorProducto", mappedBy="producto") 
    */ 
    protected $productoOc; 

Не могли бы вы, пожалуйста, дайте мне знать, почему я получаю эту ошибку при попытке для сохранения в базе данных:

Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be of the type array, object given, called in C:\xampp\htdocs\nival7\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 555 and defined 

Пожалуйста, помогите

ответ

0

Я думаю, это потому, что вы забыли сделать это в вашем __constructor()

class InProveedorProducto { 
    public function __construct(){ 
     $this->producto = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 


class InOrdenCompraDetalle { 
    public function __construct(){ 
     $this->productoOc = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 
Смежные вопросы