почему при импорте excel мои добавленные данные не сохраняются в базе данных, используемой laravel

#excel #laravel #import

Вопрос:

почему при импорте excel мои добавленные данные не сохраняются в базе данных ? я импортирую excel с типом xlsx

Мой контроллер

 public function importDataPegawai(Request $request) {  Excel::import(new ImportPegawai, $request-gt;file('upload-pegawai'));  return redirect('dashboard-admin')-gt;with('success','Berhasil Upload Data Pegawai'); }  

Мой Импорт

 lt;?php  namespace AppImports;  use AppModelsPegawaiModel; use MaatwebsiteExcelConcernsToModel; use MaatwebsiteExcelConcernsWithStartRow; use Auth; use DB;   class ImportPegawai implements ToModel, WithStartRow {  /**  * @param array $row  *  * @return IlluminateDatabaseEloquentModel|null  */  public function model(array $row)  {  foreach ($row as $data){  $data = DB::table('tbl_pegawai')-gt;where('nip', $row[0])-gt;get();  if (empty($data)) {  return new PegawaiModel([  'nip' =gt; $row[0],  'nama_lengkap' =gt; $row[1],  'pangkat' =gt; $row[2],  'gol' =gt; $row[3],  'jabatan' =gt; $row[4],  'unit_kerja' =gt; $row[5]  ]);  }  }    }   public function startRow(): int  {  return 3;  } }  

Когда я dd($data), результат выглядит так

результат dd

я получил данные из своей загрузки в Excel.

В чем проблема ? почему мои данные не могут быть сохранены в базе данных

Ответ №1:

Этот код вернет an Collection , то есть object объекты an всегда не пусты.

 DB::table('tbl_pegawai')-gt;where('nip', $row[0])-gt;get();  

Если вы переключитесь на first() него , он вернет model или null , эффективно выполняя то, что вы намеревались.

 DB::table('tbl_pegawai')-gt;where('nip', $row[0])-gt;first();  

Комментарии:

1. похоже, это не работает, теперь я не могу получить значение данных в Excel, значения (?, ?, ?, ?, ?, ?))

2. Я попытался использовать dd($row[0]) и получил значение, но почему, когда я использую ‘nip’ =gt; $row[0]. Я не могу понять значение

3. Вы установили поля, которые вы заполняете, как $заполняемые в модели?

Ответ №2:

Я уже бывал в такой ситуации раньше и понял, что это может быть вызвано разными факторами. Возможно, вы захотите попробовать следующее:

  1. Сначала сохраните файл, который вы собираетесь загрузить, в Excel 97-2003 Workbook формат.
  2. Убедитесь, что столбцы, в которые вы вставляете данные, включены в protected $fillable раздел AppPegawaiModel .
  3. Если определенные ячейки в вашей электронной таблице пусты, выполните для них проверку.

Экс.

 if ($row[0] === null) {   $row = null; }  

или, если это строковый столбец, который не может быть обнулен, вы можете сделать

 if ($row[0] === null) {   $row = 'NO DATA';  }