首页 > 解决方案 > 为什么 Laravel Excel 找不到单元格中的数据?

问题描述

我让这段代码正常工作,然后我回到了它,而不是 laravel excel 没有在单元格中找到任何数据。我收到此错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'shovel' cannot be null (SQL: insert into `customers` (`shovel`, `address`, `ice_melt`, `comments`, `stakes`, `name`, `phone_number`, `email`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?, ?, ?, 2020-12-28 20:13:08, 2020-12-28 20:13:08))"
trace: [{,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…}, {,…},…]

这是我的导入功能:

<?php

namespace App\Imports;

use App\Customer;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\SkipsOnError;
use Illuminate\Validation\Rule;

class CustomerImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        //$address = Customer::select('address')->get();
        // foreach($address as $something){
        //     if ($something->address == $row['address']){
        //         return;
        //     }
        // }
        return new Customer([
            'shovel' => $row['shovel'],
            'address' => $row['address'],
            'ice_melt' => $row['icemelt'],
            'comments' => $row['comments'],
            'stakes' => $row['stakes'],
            'name' => $row['name'],
            'phone_number' => $row['phone'],
            'email' => $row['email'],

        ]);
    }
    public function rules(): array{
        return[
            'address' => Rule::unique('customers', 'address')
        ];
    }
}

我的控制器:

public function fileImport(Request $request) 
    {
        $request->validate([
            'import_file' => 'required|file|mimes:xls,xlsx',
        ]);
        //$addresses = Customer::select('address');
        

        $path = $request->file('import_file');
        $data = Excel::import(new CustomerImport, $path); // Errors here

        return response()->json(['message' => 'uploaded successfully'], 200);
        return back();

    }

这是我用来测试的excel

就像我提到的那样,这是以前工作的,所以我必须进行一些小改动。我的路线仍在为此工作,只是导入文件似乎存在问题。任何建议表示赞赏!

标签: excellaravel

解决方案


我遇到同样的错误。事实证明不是我的代码有问题。它是表格行类型。或者您可以使该行可以为空


推荐阅读