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.
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/MhsImportPertama kita akan menggunakan metode collection untuk membaca isi dari file excel yang akan kita buat :
Untuk Template excel saya buat seperti berikut :
NAMA | NIM | 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..
Posting Komentar
Not spam, Sara, Politik, Dan Vulgar