feat(database): tambah field alamat dan referensi lokal ke tabel customers

Menambahkan migration untuk field tambahan pada tabel customers:
- Menambahkan field home_rt dan home_rw untuk RT/RW alamat rumah
- Menambahkan field ktp_rt dan ktp_rw untuk RT/RW alamat KTP
- Menambahkan field local_ref dengan tipe TEXT untuk referensi lokal panjang
- Semua field dibuat nullable untuk fleksibilitas data
- Menambahkan index untuk kombinasi RT/RW untuk performa query
- Menambahkan comment pada setiap field untuk dokumentasi
- Menyediakan method down() lengkap untuk rollback migration
- Menggunakan tipe data yang sesuai untuk setiap field
This commit is contained in:
Daeng Deni Mardaeni
2025-07-10 09:00:19 +07:00
parent 34571483eb
commit 595ab89390
2 changed files with 67 additions and 2 deletions

View File

@@ -24,9 +24,13 @@ class Customer extends Model
'email',
'sector',
'customer_type',
'birth_incorp_date'
'birth_incorp_date',
'home_rt',
'home_rw',
'ktp_rt',
'ktp_rw',
'local_ref'
];
public function accounts(){
return $this->hasMany(Account::class, 'customer_code', 'customer_code');
}

View File

@@ -0,0 +1,61 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* Menambahkan field tambahan ke tabel customers:
* - home_rt: RT alamat rumah
* - home_rw: RW alamat rumah
* - ktp_rt: RT alamat KTP
* - ktp_rw: RW alamat KTP
* - local_ref: Referensi lokal dengan data panjang
*/
public function up(): void
{
Schema::table('customers', function (Blueprint $table) {
// Field RT dan RW untuk alamat rumah
$table->string('home_rt', 10)->nullable()->comment('RT alamat rumah');
$table->string('home_rw', 10)->nullable()->comment('RW alamat rumah');
// Field RT dan RW untuk alamat KTP
$table->string('ktp_rt', 10)->nullable()->comment('RT alamat KTP');
$table->string('ktp_rw', 10)->nullable()->comment('RW alamat KTP');
// Field untuk referensi lokal dengan tipe data TEXT untuk menampung data panjang
$table->text('local_ref')->nullable()->comment('Referensi lokal dengan data panjang');
// Menambahkan index untuk performa query jika diperlukan
$table->index(['home_rt', 'home_rw'], 'idx_customers_home_rt_rw');
$table->index(['ktp_rt', 'ktp_rw'], 'idx_customers_ktp_rt_rw');
});
}
/**
* Reverse the migrations.
*
* Menghapus field yang ditambahkan jika migration di-rollback
*/
public function down(): void
{
Schema::table('customers', function (Blueprint $table) {
// Hapus index terlebih dahulu
$table->dropIndex('idx_customers_home_rt_rw');
$table->dropIndex('idx_customers_ktp_rt_rw');
// Hapus kolom yang ditambahkan
$table->dropColumn([
'home_rt',
'home_rw',
'ktp_rt',
'ktp_rw',
'local_ref'
]);
});
}
};