es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El campo no tiene un valor predeterminado al importar un archivo de Excel en Laravel.

Quiero importar un archivo de Excel a mi base de datos desde la web. No tengo idea de por qué no obtiene el valor del Excel, porque ya lo he intentado y muestra la colección del Excel como lo que quiero hacer con él. Pero muestra un error.

SQLSTATE[HY000]: Error general: 1364 El campo ‘kode_matkul’ no tiene un valor predeterminado (SQL: insert into kelas () values ())

Ruta:

Route::post('/admin/import_kelas_excel', 'DashboardController@importKelasExcel');

Controlador:

public function importKelasExcel(Request $request) 
{
    Excel::import(new KelasImport, $request->file('file'));
    return redirect('admin/list_kelas')->with('status', '¡Excel importado con éxito!');
}

KelasImport:

namespace App\Imports;

use App\Kelas;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class KelasImport implements ToCollection, WithHeadingRow
{

    public function collection(Collection $rows)
    {
        foreach ($rows as $row) {
            Kelas::updateOrCreate([
                'id' => $row['nomor'],
            ], [
                'id' => $row['nomor'],
                'kode_matkul' => $row['kode'],
                'nama_matkul' => $row['matakuliah'],
                'grup' => $row['grup'],
                'sifat' => $row['sifat'],
                'sks' => $row['sks'],
                'jumlah_mhs' => $row['jumlah_mahasiswa'],
                'tahun_ajaran' => $row['tahun_ajaran'],
                'semester' => $row['semester'],
                'jumlah_dosen' => $row['jumlah_dosen'],
            ]);
        }
    }
}

Modelo:

protected $table = "kelas";
protected $fillable = ["kode_matkul", "nama_matkul", "grup", "sifat", "sks", "jumlah_mhs", "prodi", "tahun_ajaran", "semester"];
public $timestamps = false;

Excel:
Imagen

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el error es causado por la falta de un valor predeterminado para el campo “kode_matkul” en la tabla “kelas”. Esto significa que al intentar insertar una nueva fila, Laravel espera un valor para este campo, pero no se proporciona en el archivo de Excel, de ahí el error.

    Para solucionar esto, puede proporcionar un valor predeterminado para el campo “kode_matkul” en la definición de la tabla o modificar el array “fillable” en el modelo “Kelas” para incluir el campo “id”, que parece ser utilizado como clave primaria.

    Modifique el modelo “Kelas” de la siguiente manera:

    protected $fillable = ['id', 'kode_matkul', 'nama_matkul', 'grup', 'sifat', 'sks', 'jumlah_mhs', 'prodi', 'tahun_ajaran', 'semester'];
    

    Esto permitirá que el campo “kode_matkul” sea actualizado o creado sin desencadenar el error.

Comments are closed.