【问题标题】:Laravel Excel ErrorException Undefined offset: 0Laravel Excel ErrorException 未定义的偏移量:0
【发布时间】:2021-01-25 05:13:59
【问题描述】:

尝试将 excel 数据导入我的 mysql 数据库并得到 ErrorException Undefined offset: 0.

尝试使用 var_dump($row) 检查数据行的数组。它看起来关闭并且不确定如何使数据很好地显示以便能够传递给db。

array(5) { ["a"]=> string(1) "B" ["white"]=> string(5) "Green" ["example1_at_gmailcom"]=> string(18) "example2@gmail.com" [60123456789]=> int(60162313142) [5]=> int(5) }

这是我的 excel 数据:

型号

 public function model(array $row)
{
    var_dump($row);
    return new ContactList([
        'first_name' => $row[0],
        'last_name' => $row[1],
        'email' => $row[2],
        'phone' => $row[3],
        'group_id' => $row[4],
    ]);
}

我已经尝试使用字符串替换 $row[],它可以完美地将数据存储到我的数据库中。

控制器

if($request->hasFile('selected_file')){

            $file = $request->file('selected_file');
            Excel::import(new ContactListsImport, $file);


            return redirect()->back()->with('success', 'Data saved successfully!');
        }

【问题讨论】:

  • 你正在转储你得到的数组......你看到里面有一个键 0 吗?
  • sry,我是新手。不,我没有看到它,但即使我删除了 vardump,我仍然得到同样的错误 ErrorException Undefined offset: 0
  • 因为没有索引0,正如您在转储数组时看到的并且没有键0 ...您无法访问不存在的数组的键...您在这里遇到问题,因为该文件的第一行被用作标题(列名),您应该查看文档以调整此行为或不使用此行为
  • 仅供参考,但 Laravel 使用 Symfony 的 VarDumper 组件,因此您可以使用 dump()dd() 以获得更具可读性的输出。
  • 你使用的是什么版本的 Laravel 和 Laravel Excel?

标签: excel laravel import import-from-excel laravel-excel


【解决方案1】:

您需要从 Import 类中删除 WithHeadingRow 接口才能使用数组的数字索引。

根据 documentation,当您的 Import 类实现 WithHeadingRow 时,它将使用第一行作为数组的索引,然后将其从提供的行中删除。

【讨论】:

  • 是的,我想这就是原因
  • @N.Tec 如果这回答了您的问题,请您将其标记为已接受:)
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2014-06-25
  • 2015-12-20
  • 2020-01-02
相关资源
最近更新 更多