0

Assalamwalaikum Warohmatullahi Wabarokatuh.
Hi.. sahabat rajin, kali ini kita akan membahas bagaimana cara Upload ke banyak table berelasi dengan 1 file excel pada package laravel excel.
Pastikan mesin kamu sudah terinstall extentions php berikut :

PHP extension php_zip enabled
PHP extension php_xml enabled
PHP extension php_gd2 enabled


disini saya menggunakan laravel versi 6 dan mysql sebagai databasenya.
Oya tujuan tulisan ini bukan untuk manggurui teman-teman sekalian, tetapi untuk catatan saya ketika saya lupa / mentok ketika ada masalah. Rasulullah shallallaahu ‘alaihi wa sallam bersabda:
Ikatlah ilmu dengan dengan menulisnya

Kasus :

  • Table Users
  • Table Mahasiswa
  • Table Profile

Dimana table mahasiswa dan profile masing-masing mempunyai field users_id


Persiapan :


composer require maatwebsite/excel



'providers' => [
/*
* Package Service Providers...
*/
Maatwebsite\Excel\ExcelServiceProvider::class,
]

'aliases' => [
...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]



Lalu Publish Vendor Providers dengan perintah



php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"



Selanjutnya kita akan buat file import dengan melakukan perintah :



php artisan make:import MhsImport

Jika Kita Cek ada folder baru di dalam app/Imports/MhsImport

Pertama kita akan menggunakan metode collection untuk membaca isi dari file excel yang akan kita buat :
Untuk Template excel saya buat seperti berikut :

NAMA NIM EMAIL PASSWORD ANGKATAN JURUSAN KURIKULUM TTL KELAMIN AGAMA STATUS DIBUAT
aman 14050880 aman@email.com 123 192 Ekonomi Ekonomi 1991-05-05 LAKI-LAKI ISLAM 1 admin
asas 1405051 asas@email.com 124 192 Perbankan Perbankan 1991-05-06 LAKI-LAKI ISLAM 1 admin


namespace App\Imports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use DB;
use App\User;
use Carbon\Carbon;



Code Lengkap Isi Dari Class MhsImport

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use DB;
use App\User;
use Carbon\Carbon;
use App\Notifications\UserWelcome;

class MhsImport implements WithHeadingRow,ToCollection
{
/**
* @param Collection $collection
*/
public function collection(Collection $rows)
{


foreach ($rows as $key) {
$user=User::updateOrCreate(
['email'=>$key['email'],'nim'=>$key['nim']]
,[
'uuid'=>unik(),
'name'=>$key['nama'],


'password'=>bcrypt($key['password']),
'old_password'=>$key['password'],
'status'=>$key['status'],
'created_by'=>$key['dibuat']

]);
$selectuser=User::where('email',$key['email'])->get();
$jurusan=DB::table('jurusan')->where('name','LIKE','%'.$key['jurusan'].'%')->first();
$kurikulum=DB::table('kurikulum')->where('name','LIKE','%'.$key['kurikulum'].'%')->first();

foreach ($selectuser as $mhs ) {
$x=DB::table('mahasiswa')->updateOrInsert(['users_uuid'=>$mhs->uuid],[
'uuid'=>unik(),
'nim'=>$mhs->nim,
'angkatan'=>$key['angkatan'],
'jurusan_uuid'=>$jurusan->uuid,
'kurikulum_uuid'=>$kurikulum->uuid,
'created_by'=>'Import',
'created_at'=>Carbon::now(),

]);
}
foreach ($selectuser as $pro ) {
DB::table('profile')->updateOrInsert(['users_uuid'=>$pro->uuid],[
'uuid'=>unik(),
'nama_lengkap'=>$pro->name,
'religion'=>$key['agama'],
'dob'=>$key['ttl'],
'sex'=>$key['kelamin']
]);
}
}

}

}



Lalu isi file Controller

use App\Imports\MhsImport;
use Excel;
use DB;

class TesController extends Controller
{

public function store(Request $request)
{
DB::beginTransaction();

try {
DB::commit();

$file = $request->file('file');
Excel::import(new MhsImport,$file);

echo "OK";
} catch (\Exception $e) {
DB::rollback();
//toastr()->error($e->getMessage());
echo $e->getMessage();
}

}


Ok sekian wasalamwalikum..
Next
This is the most recent post.
Previous
Posting Lama

Posting Komentar

Not spam, Sara, Politik, Dan Vulgar

 
Top