【问题标题】:Laravel Excel Not Importing Data To Database [duplicate]Laravel Excel不将数据导入数据库[重复]
【发布时间】:2022-01-14 14:01:27
【问题描述】:

当我在获取文件后从 excel 导入数据并在将数据保存到 db 的步骤中时,它显示的字段没有来自 excel 文件的值。因为所有字段都填充了数据。

我正在使用 laravel excel

LeadImport 代码

 return new lead([
        'name'  => $row[0],
        'leadid'  => $row[1],
        'number'   => $row[2],
        'city'  => $row[3],
        'state' => $row[4],
        'address'   => $row[5],
        'pincode'   => $row[6],
        'type'  => $row[7],
        
    ]);

Controller Code
Excel::import(new LeadsImport, $request->file('file'));

错误

SQLSTATE[HY000]: General error: 1364 Field 'leadid' doesn't have a default value (SQL: insert into `leads` (`updated_at`, `created_at`) values (2022-01-14 19:24:21, 2022-01-14 19:24:21))

【问题讨论】:

  • 您好,请查看所有 LeadImport 代码类
  • @mohammadgitipasand 命名空间 App\Imports;使用 App\Models\lead;使用 Maatwebsite\Excel\Concerns\ToModel;
  • @miken32 NO 没有使用任何 Excel 模块
  • 这与excel无关。您正在尝试将缺少值的内容保存到数据库中。
  • @miken32 不,兄弟,我正在使用 excel 保存数据。阅读问题的标题和正文

标签: laravel laravel-excel


【解决方案1】:

leadid 没有分配任何值,也没有分配任何默认值。 $row[1] 返回的是什么?我假设row[1] 的值为空,这就是您实际收到此错误的原因。 dd() 它并告诉我们它返回了什么。

【讨论】:

  • 如果我将leadid设置为null,那么它在'name'列上显示相同的错误
  • dd($row) 看看它在row[0] 和row[1] 中是否真的有任何值。错误来自您试图在表列中插入literally nothing。或者调试它使 name 和 leadid 可以为空,这样你就可以看到它是否真的在插入其他数据。
  • leadid name number 市州地址 pincode type 1123 vivek 8168501882 bhiwani haryana 221 127021 员工file('file') 时也是如此。它只显示文件名,如果我将leadid & name 列设为null...那么它将在另一列上显示相同的错误
  • 我认为问题来自$request->file('file')。它没有得到正确的文件,这就是为什么一切都会出现null 错误。我对$request->file 有类似的问题,但我不记得问题出在哪里。总的来说,您在获取文件时遇到了问题。 dd() 时仅显示文件名意味着您没有正确获取文件。
  • -test: false -originalName: "book.xlsx" -mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" -error: 0 #hashName: null path: "C:\ xampp\tmp" 文件名:"phpF2C2.tmp" 基名:"phpF2C2.tmp" 路径名:"C:\xampp\tmp\phpF2C2.tmp" 扩展名:"tmp" 真实路径:"C:\xampp\tmp\phpF2C2.tmp “ 大小:8251 权限:0100666 所有者:0 组:0 类型:“文件” 可写:真 可读:真 可执行文件:假 文件:真 dir:假 链接:假 链接目标:“C:\xampp\tmp\phpF2C2.tmp”
【解决方案2】:

在您的 excel 文件中,您必须有单元格:

name, leadid, number, city, state, address, pincode, type

在 LeadImport 中:

 return new lead([
    'name' => $row['name'],
    'leadid' => $row['leadid'],
    'number' => $row['number'],
    'city' => $row['city'],
    'state' => $row['state'],
    'address' => $row['address'],
    'pincode' => $row['pincode'],
    'type' => $row['type'],
    
]);

【讨论】:

  • 感谢您给您时间......当我经历这个时。它显示了这个新错误“未定义索引:leadid”
猜你喜欢
  • 2011-10-15
  • 2020-02-24
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2016-03-18
  • 2016-02-09
相关资源
最近更新 更多