在 laravel 中导入 CSV 文件

Import CSV file in laravel

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

我想要的是从另一个 table 获取 parentsid 并使用这些 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 的 parents 名称存储在名为 finder_ymm_values 的 table 中他们的 dropdown_id4 我认为这将有助于我们限制搜索并更快地获得结果

问题

为了搜索我的 parents 名称并获取我拥有的每个值的 ID,我应该向我的导入函数添加什么?

更新

我在导入函数中添加了下面的代码,现在它确实获得了我正在寻找的 ID,但问题是它在 collection.

中获得了它们

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]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails .......... insert into finder_maps (ymm_value_id, sku, updated_at, created_at) values ([303], L0R88AA, 2018-06-14 10:41:51, 2018-06-14 10:41:51))

正如你在我错误的最后一行看到的那样,我得到了我的 id [303]

有什么想法吗?

已解决

这里是我所做的最后更改并成功导入了我的文件。

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

希望能帮到别人。