Php 将变量插入Laravel CSV文件导入数组
我有一个文件,我上传,我传递了一个党与它一起。我需要将csv文件中的记录与每个记录中的partid一起插入表中 从文件中插入记录可以正常工作 我需要将partid添加到数组中。我还不知道怎么做。如有任何建议,将不胜感激 提交表格Php 将变量插入Laravel CSV文件导入数组,php,arrays,laravel,csv,Php,Arrays,Laravel,Csv,我有一个文件,我上传,我传递了一个党与它一起。我需要将csv文件中的记录与每个记录中的partid一起插入表中 从文件中插入记录可以正常工作 我需要将partid添加到数组中。我还不知道怎么做。如有任何建议,将不胜感激 提交表格 <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;" action="/part/importbom" class="form-horizontal" metho
<form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;"
action="/part/importbom" class="form-horizontal" method="post"
enctype="multipart/form-data">
{{ csrf_field() }}
<input type="file" name="file"/>
<input type="hidden" name="part_id" value="{{ $part->id }}"/>
<button class="btn btn-primary">Import File</button>
</form>
关于Laravel文件:
然后将变量
$partId
传递到需要的地方。您应该能够将其包含在foreach循环中:
foreach ($rows as $row) {
$row = array_combine($header, $row);
Bom::create([
'part_id' => $request->part_id,
'item' => $row['item'],
'qty' => $row['qty'],
'designators' => $row['designators'],
'hand_add' => $row['hand_add'],
'hand_solder' => $row['hand_solder'],
'hand_solder_pins' => $row['hand_solder_pins'],
'notes' => $row['notes'],
'install' => $row['install'],
]);
}
或者,为了缩短代码,您可以执行以下操作:
foreach ($rows as $row) {
$row = array_combine($header, $row);
$row['part_id'] = $request->part_id;
Bom::create($row);
}
为什么不使用$request获取零件id?如果可以获取零件id,如何将其添加到数组中,以便与每条记录一起插入?您使用的是什么版本的Laravel?在上面的控制器代码中,我需要在Bom::create数组中获取$partid。正如我提到的,我可以准备好获取$partid,我只是不知道如何将它包含在正在解析csv文件并插入记录的创建数组中。例如,我知道这是错误的,但我尝试完成的是Bom::create(['part_id'=>$partid,'item'=>$row['item'],好的,我同意你的观点,那么你的评论中的方法有什么问题吗,你有错误吗?关键部分的id是否在你的模型中创建?ErrorException(E_WARNING)array_combine():两个参数应具有相同数量的elements@Subtlebot我不确定我是否遵守了,上面的代码没有创建任何新的CSV。它只是从CSV文件中获取每一行并将该行添加到数据库中的新行。OP提到添加CSV数据工作正常,他们只是不确定如何添加
part\Id
进入数组。我尝试了你的两个建议,但仍然得到了ErrorException(E_WARNING)数组_combine():两个参数应具有相同数量的elements@user2325548在这种情况下,您是否可以将正在上载的文件中的csv数据添加到您的问题中。出现这种错误的原因是其中一行的标题行具有不同的列数。就是这样。我还没有超过designa的字段的数据我添加了空白的逗号给各自的空字段,它工作了。呃…非常感谢!@ USER252554我很高兴能帮上忙!
foreach ($rows as $row) {
$row = array_combine($header, $row);
Bom::create([
'part_id' => $request->part_id,
'item' => $row['item'],
'qty' => $row['qty'],
'designators' => $row['designators'],
'hand_add' => $row['hand_add'],
'hand_solder' => $row['hand_solder'],
'hand_solder_pins' => $row['hand_solder_pins'],
'notes' => $row['notes'],
'install' => $row['install'],
]);
}
foreach ($rows as $row) {
$row = array_combine($header, $row);
$row['part_id'] = $request->part_id;
Bom::create($row);
}