Unable to import csv data into database in yii2

I am very new to web development.

I'm new here, my first question is on stackoverflow.

I am confused what error is in the code, the code will store the csv data array in the database, sorry, my bad English.

controller

public function actionUpload()
{
    $model = new Skt();
    //error_reporting(E_ALL);
    //ini_set('display_error', 1);

    if ($model->load(Yii::$app->request->post())) {

        $file = UploadedFile::getInstance($model, 'file');
        $filename = 'Data.' . $file->extension;
        $upload = $file->saveAs('uploads/' . $filename);

        if ($upload) {

            define('CSV_PATH', 'uploads/');
            $csv_file = CSV_PATH . $filename;
            $filecsv = file($csv_file);

            foreach ($filecsv as $data) {
                $modelnew = new Skt();
                $hasil = explode(",", $data);
                $no_surat= $hasil[0];
                $posisi= $hasil[1];
                $nama= $hasil[2];
                $tgl_permanen= $hasil[3];
                $grade= $hasil[4];
                $tgl_surat= $hasil[5];
                $from_date = $hasil[6];
                $to_date = $hasil[7];
                $modelnew->no_surat = $no_surat;
                $modelnew->posisi = $posisi;
                $modelnew->nama = $nama;
                $modelnew->tgl_permanen = $tgl_permanen;
                $modelnew->grade = $grade;
                $modelnew->tgl_surat = $tgl_surat;
                $modelnew->from_date = $from_date;
                $modelnew->to_date = $to_date;
                $modelnew->save();
                //print_r($modelnew->validate());exit;

            }
            unlink('uploads/'.$filename);
            return $this->redirect(['site/index']);
        }
    }else{
        return $this->render('upload',['model'=>$model]);
    }
    return $this->redirect(['upload']);
}

Model

class Skt extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'skt';
    }

    public $file;

    public function rules()
    {
        return [
            [['file'], 'required'],
            [['file'], 'file', 'extensions' => 'csv', 'maxSize' => 1024*1024*5],
            [['no_surat'], 'required'],
            [['tgl_surat', 'from_date', 'to_date'], 'string'],
            [['no_surat', 'posisi', 'nama', 'tgl_permanen', 'grade'], 'string', 'max' => 255],
        ];
    }
    public function attributeLabels()
    {
        return [
            'no_surat' => 'No Surat',
            'posisi' => 'Posisi',
            'nama' => 'Nama',
            'tgl_permanen' => 'Tgl Permanen',
            'grade' => 'Grade',
            'tgl_surat' => 'Tgl Surat',
            'from_date' => 'From Date',
            'to_date' => 'To Date',
            'file' => 'Select File'
        ];
    }
}

thanks for the help..

+4
source share
2 answers

finally he works with changing this $hasil = explode(";", $data);

0
source

change your code to the next to display errors that may occur when trying to save. Errors may occur depending on your model rules.

if (!$modelnew->save()) {
   var_dump($modelnew->getErrors());
}

getErrors () from Api

. , csv .

0

Source: https://habr.com/ru/post/1612674/


All Articles