2015-11-12 47 views
4

我想提交一个表单并将这些值存储在2个不同的表中(即在同一个数据库中)。如何在2个不同的表中提交表单值symfony

这是形式:

<div class="control-group"> 
     <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>Naam</label> 

     <div class="controls"> 
      {{ form_widget(form.product) }} 
      {{ form_errors(form.product) }} 
     </div> 
</div> 
<div class="control-group"> 
     <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>Aantal</label> 

     <div class="controls"> 
      {{ form_widget(form.amount) }} 
      {{ form_errors(form.amount) }} 
     </div> 
</div> 

这是表单生成器:

$builder->add("amount", "number", array("label" => "Aantal")); 
$builder->add("product", "text", array("attr" => array("autocomplete" => "off", "data-provide" => "typeahead", "data-items" => "15", "data-source" => $dataSource), 'mapped' => false)); 
$builder->add("price", "number", array("label" => "Aangepaste prijs", 'mapped' => false)); 

这是实体的一部分:

/** 
    * @var integer $id 
    */ 
    private $id; 

    /** 
    * @var integer $amount 
    */ 
    private $amount; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set amount 
    * 
    * @param integer $amount 
    * @return BookingEntry 
    */ 
    public function setAmount($amount) 
    { 
     $this->amount = $amount; 

     return $this; 
    } 

    /** 
    * Get amount 
    * 
    * @return integer 
    */ 
    public function getAmount() 
    { 
     return $this->amount; 
    } 

这里是ORM:

type: entity 
    table: null 
    fields: 
     id: 
      type: integer 
      id: true 
      generator: 
       strategy: AUTO 
     amount: 
      type: float 

现在,我想通过名称'serial_nr'的表单添加一个输入字段。我想将此值存储在与存储“产品”和“数量”的表格不同的表格中。

有人可以指出我正确的方向吗?

回答

1

您对'产品'和'价格'选项'映射'=> false,因此如果表单在某个实体上定义,则不会保存此值,或者您自行完成。 如果我理解正确的话,你有列的表(产品):

  • 产品
  • 价格

,而不是你想要添加表(product_serial)与它有关的列:

  • PRODUCT_ID
  • serial_nr

并添加这一个很多关系到您的窗体? 你可以做到这一点通过在表product_serial定义学说这种关系:

manyToOne: 
    product: 
     targetEntity: Product 
     inversedBy: serials 
     joinColumn: 
      name: product_id 
      referencedColumnName: id 

和表产品:

oneToMany: 
    serials: 
     targetEntity: ProductSerial 
     mappedBy: product 

,并加入到收集形成场“连续”。

http://symfony.com/doc/current/reference/forms/types/collection.html

+0

感谢您的反馈。我认为我有关系部分的工作。现在我需要知道如何将“连续剧”添加到formbuilder。任何想法? – yesbe97

+0

阅读它:http://symfony.com/doc/current/cookbook/form/form_collections.html它应该对它有帮助,在你学习之后很简单。 –

+0

谢谢Sed,它现在有效。你真棒! – yesbe97

相关问题