excel import

时间:2019-10-29 19:46:01

标签: php laravel

我正在尝试将excel导入数据保存到数据库中,当前路由和所有功能都在工作,只是没有在数据库中添加任何内容。它进入函数import中,但是什么也没有发生,问题几乎肯定在该函数的代码中,但是我不确定应该如何处理。

这是我在控制器中的代码

public function import(Request $request)
{
    Log::info('test');
    $request->validate([
        'file' => 'required|mimes:xls,xlsx'
    ]);

    $path = $request->file('file')->getRealPath();
    Log::info($path);
    $data = Excel::load($path)->get();
    Log::info($data);

    if ($data->count()) {
        foreach ($data as $key => $value){
            $arr[] = [
                'NOMBRE' => $value->name,
                'CEDULA' => $value->card,
                'CARNET' => $value->scard,
                'TIPO-USUARIO' => $value->user_type_id,
                'CORREO' => $value->email,
                'PASSWORD' => $value->password,
            ];
        }

        if (!empty($arr)) {
            User::insert($arr);
        }
    }
    return redirect('/imports');
}

当我在日志中运行的唯一内容是local.INFO: test时,它是函数的第一行,但是此后的所有内容都是空白,我不确定自己在做什么错。

2 个答案:

答案 0 :(得分:0)

您似乎应该在mass assignment属性中添加字段,以便能够以这种方式插入记录

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['NOMBRE','CEDULA','CARNET','TIPO-USUARIO','PASSWORD','CORREO'];
}

也许您也可以将您的insert语句移动到for语句中,以便将当前的处理用户插入数据库或循环$ arr并在其后插入

if (!empty($arr)) {
            User::create($arr[$key]);
        }

答案 1 :(得分:0)

如果您使用的是laravel,则可以这样做

public function import(Request $request)
{
    Log::info('test');
    $request->validate([
        'file' => 'required|mimes:xls,xlsx'
    ]);

    $path = $request->file('file')->getRealPath();
    Log::info($path);
    $data = Excel::load($path)->get();
    Log::info($data);

    if ($data->count()) {
        foreach ($data as $key => $value){
            $user = new User();
            $user->NOMBRE = $value->name;
            $user->CEDULA = $value->card;
            $user->CARNET = $value->scard;
            $user->TIPO-USUARIO = $value->user_type_id;
            $user->CORREO = $value->email;
            $user->PASSWORD = $value->password;
            $user->save();
        }
    }`enter code here`
    return redirect('/imports');
}