Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将变量插入Laravel CSV文件导入数组_Php_Arrays_Laravel_Csv - Fatal编程技术网

Php 将变量插入Laravel CSV文件导入数组

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

我有一个文件,我上传,我传递了一个党与它一起。我需要将csv文件中的记录与每个记录中的partid一起插入表中

从文件中插入记录可以正常工作

我需要将partid添加到数组中。我还不知道怎么做。如有任何建议,将不胜感激

提交表格

<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);
}