这是我的html表单,其中包含动态字段数组。换句话说,可以动态生成字段。
<form>
|Product
<input type="text" name="Product[Name][]">
<input type="text" name="Product[Number][]">
<input type="text" name="Product[Description][]">
|Product Accessories
<input type="text" name="Accessory[Name][]">
<input type="text" name="Accessory[Number][]">
<input type="text" name="Accessory[Description][]">
</form>
这是我的PHP从HTML数组获取值。
<?php
$product = $_POST['Product'];
$accessory = $_POST['Accessory'];
if ($this->hasValueAndNotEmpty($product)) {
foreach($product as $key=>$productItem)
{
//Issue: How do I use the product id to insert accessories
/*Maybe like this..*/
foreach($accessory as $$accessoryItem){
}
}
}
数据库方案如下:
Product
表格
id
name
number
description
.....
Product_Accessories
表格
id
product_id
name
number
我的目标是将与它们所属的Product_Accessories
相匹配的所有附件插入product_id
表中。
在sudo代码中将是:
插入与HTML表单中指定的产品相匹配的配件。
以下代码根据我要完成的工作而工作,但是我不确定如何提取附件字段值。
$fields = array_combine(array_keys($product_fields),
array_values($product_fields));
$product (model) after inserting first.
foreach($product as $key => $productItem) {
if ($this->hasValue($fields)) {
for ($i = 0; $i < count($key); $i++) {
}
var_dump($productItem->accessory()->create([
'name' => 'kllk',
'number' => 'fddfl',
'description' => 'dfldfkl',
]));
}
}
当我去查看附件表时,它确实插入了具有相应product_id的附件,但是不知道如何插入实际附件字段值。
答案 0 :(得分:0)
我有两种可以使用的解决方案。
1)使用AJAX和数据属性来区分哪个附件属于哪个项目。
2)在产品中包括具有唯一ID的隐藏文本字段。创建新的附件字段时,请确保它们也具有相同的唯一ID。
<form>
|Product
<input type="text" name="Product[Name][]">
<input type="text" name="Product[Number][]">
<input type="text" name="Product[Description][]">
<input type="hidden" name="Product[uuid][]" value="12345"> <!-- this should be generated -->
|Product Accessories
<input type="text" name="Accessory[Name][]">
<input type="text" name="Accessory[Number][]">
<input type="text" name="Accessory[Description][]">
<input type="hidden" name="Accessory[uuid][]" value = "12345"> <!-- this should be copied from the product which the accessory belongs to -->
</form>
然后在php中,您可以首先插入所有产品,然后创建一个数组,该数组指向数据库中uuid
属于哪个id
。
如果上述产品已插入ID为2的数据库中,
$uuid_id = [ '12345' => 2 ];
然后为您的Accessory Array
使用foreach循环,并使用uuid值加载产品ID。 $product_id = $uuid_id[ UUID ];
对于UUID,请使用当前时间,因此它始终是唯一的。
new Date().getTime(); //for JavaScript
或
microtime(true); //for php