如何在 2 个不同的表中提交表单值 symfony

how to submit form values in 2 different tables symfony

我想提交一个表单并将值存储在 2 个不同的 table 中(在同一数据库中)。

这是表格:

<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' 的表单添加一个输入字段吗?我想将此值存储在与存储 'product' 和 'amount' 不同的 table 中。

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

你有 'product' 和 'price' 选项 'mapped' => false,所以如果表单是在某个实体上定义的,它不会保存这个值,或者你自己做。 如果我理解正确的话,你有 table (product) with columns:

  • 产品
  • 价格
  • 数量

而不是您想要添加与之相关的 table (product_serial) 列:

  • product_id
  • serial_nr

并将此一对多关系添加到您的表单? 您可以通过在 table product_serial:

的学说中定义这种关系来做到这一点
manyToOne:
    product:
        targetEntity: Product
        inversedBy: serials
        joinColumn:
            name: product_id
            referencedColumnName: id

以及 table 产品:

oneToMany:
    serials:
        targetEntity: ProductSerial
        mappedBy: product

并添加到表单集合字段 'serials'。

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