2014-11-03 60 views
0

即時嘗試安全從已購買的各種產品的連續出版物,所以我發票表,連續表和我的產品表之間的關係,關係如下所示。如何處理一個表格中的多音關係

tables

我已經做了一個表格來添加product_table和invoice_table與serial_table,形式添加關係和連續之間的關係,但用戶不應該提供給選擇之間的關係在表格中,它應該從購買的產品中找到idproduct和id invoice,並存儲這些序列並將其發送到數據庫,而不需要用戶更改它,下面是我的表格的圖片。

form

這是來自形式formtype上述

class serialType extends AbstractType 
{ 
     /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('serial','integer') 
      ->add('idPedido') 
      ->add('idProducto')   
      ->add('agregar serial','submit') 
     ; 
    } 

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

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

我輸入從上方所示的表的php app/console doctrine:mapping:import命令我的ORM文件。

這是我的產品orm。

sava\InventarioBundle\Entity\TblProductos: 
    type: entity 
    table: tbl_productos 
    fields: 
     idProduct: 
      id: true 
      type: integer 
      unsigned: false 
      nullable: false 
      column: id_product 
      generator: 
       strategy: IDENTITY 
    lifecycleCallbacks: { 

}

我的序列密鑰表ORM。

sava\InventarioBundle\Entity\TblProductosSeriales: 
    type: entity 
    table: tbl_productos_seriales 
    fields: 
     idProductoSerial: 
      id: true 
      type: integer 
      unsigned: false 
      nullable: false 
      column: id_producto_serial 
      generator: 
       strategy: IDENTITY 
     serial: 
      type: string 
      length: 80 
      fixed: false 
      nullable: false 
    manyToOne: 
     idProduct: 
      targetEntity: TblProductos 
      cascade: { } 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       id_product: 
        referencedColumnName: id_product 
      orphanRemoval: false 
     idinvoice: 
      targetEntity: TblPedidos 
      cascade: { } 
      mappedBy: null 
      inversedBy: null 
      joinColumns: 
       id_pedido: 
        referencedColumnName: id_invoice 
      orphanRemoval: false 
    lifecycleCallbacks: { } 

這是我的發票orm。

sava\InventarioBundle\Entity\TblPedidos: 
    type: entity 
    table: tbl_pedidos 
    fields: 
     idinvoice: 
      id: true 
      type: integer 
      unsigned: false 
      nullable: false 
      column: id_invoice 
      generator: 
       strategy: IDENTITY 
    lifecycleCallbacks: { } 

回答

1

如果您不希望用戶能夠選擇關係,爲什麼要將它們添加到表單中?您可以設置它們的服務器端,在控制器:

這樣:

  1. 得到您的形式
  2. 查詢從表單中的ID數據庫中獲得兩個其他的數據
  3. 滋潤對象(formObject-> setStuff($ ID))
  4. 堅持

爲了讓你做什麼的想法:例如,如果你^ h AVE串行並希望從它

$serial = new Serial; 
    $form = $this->createForm(new SerialType, $serial); 

    $request = $this->get('request'); 


    if ($request->getMethod() == 'POST') { 

    $form->bind($request); 
    // if form is valid 
    if ($form->isValid()) { 

     $em = $this->getDoctrine()->getManager(); 

     // get the data sent from your form 
     $data = $form->getData(); 
     $idSerial = $data->getSerial(); 


     // find your ids according to the serial you just got from the form 
     $repository = $this->getDoctrine()->getManager()->getRepository('AcmeBundleBundle:Products'); 
     $idProduct = $repository->findBySerial($idSerial); 

     // hydrate the $serial 
     $serial->setProduct($idProduct); 


     $em->persist($serial); 
     $em->flush(); 

     return .... 
     } 
    } 

讓你的產品ID,如果你在你的模板中的IDS做

<form role="form" 
      action="{{ path('your_route', { 'idProduct': idProduct, 'idInvoice': idInvoice }) }}" 
      ... 
    </form> 

然後你可以讓他們在你的控制器像這樣

UpdateSerialAction($idProduct, $idInvoice) 
{ 

和水合與這兩個參數的形式對象

+0

感謝您的迴應。好的,現在我知道我必須做的是將產品和發票表中的id輸入到串行表中。但是,我不明白我是如何找到id與我提供的表單中的序列,如果關係不存在的時刻。所以我想,無論如何,我可以從產品和發票表中發送ID或相關數據嗎?您查看錶單的頁面顯示發票和產品表相關的數據。我該如何將這些數據發送給控制器,我是否需要製作另一種表格,或者是否使用相同的序列表格。 – 2one2 2014-11-03 17:29:45

+0

所以我想你的產品ID和發票ID在你的樹枝模板中的窗體顯示? – oligan 2014-11-03 18:16:19

+1

非常感謝,你的回答真的幫了我。 – 2one2 2014-11-04 01:46:15

相關問題