如何在 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
我想提交一个表单并将值存储在 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