在laravel中导入CSV文件

时间:2018-06-14 03:19:28

标签: laravel maatwebsite-excel laravel-excel

我正在使用maatwebsite/excel我的CSV文件包含1449行,其中每行有valueparent title。 (这是样本)

screen1

我想要的是从另一个表中获取id parents并使用这些ID而不是标题(我在我的csv中有)

import function

public function importsku(Request $request) {
      Excel::load($request->file('file'), function($reader) {
        $results = $reader->all();

         foreach($results as $row){
            $findermap = new FinderMap;
            $findermap->ymm_value_id = $row->ymm_value_id;
            $findermap->sku = $row->sku;
            $findermap->save();
        }

        Session::flash('success', 'Your Data imported successfully.');
        return redirect()->route('finders.index');
      });
}

更多信息

我希望获得id's的父母姓名存储在名为 finder_ymm_values 的表格中,其中 dropdown_id 4 我认为这将有助于我们限制搜索并更快地获得结果

问题

我应该在导入功能中添加什么才能搜索我的父母姓名并为我拥有的每个值获取他们的ID?

更新

我将下面的代码添加到我的导入功能中,现在它确实获得了我正在寻找的ID,但问题是它会将它们收集起来。

code i added

foreach($results as $row){
  //added
  $vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
  $findermap = new FinderMap;
  $findermap->ymm_value_id = $vals; //changed
  $findermap->sku = $row->sku;
  $findermap->save();
}

error i get

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败.......... insert   进入finder_mapsymm_value_idskuupdated_atcreated_at)   价值观[[303],L0R88AA,2018-06-14 10:41:51,2018-06-14 10:41:51))

正如您在我的错误的最后一行中看到的那样,我将我的身份标记为[303]

任何想法?

1 个答案:

答案 0 :(得分:2)

解决

此处我已成功修改并成功导入了我的文件。

foreach($results as $row){
  $vals = FinderYmmValue::where('title', $row->ymm_value_id)->where('dropdown_id', '4')->pluck('id');
  foreach ($vals as $val) {
    $valid = $val;
  }
  $findermap = new FinderMap;
  $findermap->ymm_value_id = $valid;
  $findermap->sku = $row->sku;
  $findermap->save();
}

希望它可以帮助别人。