Почему это не сохранение в базе данных, импорт Excel - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь сохранить данные импорта 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 голосов
/ 29 октября 2019

вы можете делать так, если используете 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');
}
0 голосов
/ 29 октября 2019

Похоже, вы должны добавить свои поля в свойство массовое назначение , чтобы иметь возможность вставлять записи таким образом

<?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'];
}

Также, возможно, вы можете переместить вставкуоператор в оператор for, подобный этому, чтобы вставить текущего обрабатывающего пользователя в базу данных или циклически обработать $ arr и вставить его после

if (!empty($arr)) {
            User::create($arr[$key]);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...