PENGANTAR
Materi sebelum kita sudah membahas bagaimana membuat atau menginstal laravel 12 serta melakukan konfigurasi terhadap file .env/enverotment untuk membuat database. Projek agenda yang kita buat dengan nama database db_agenda telah memiliki tabel utama yang terdiri dari beberapa tabel. sekarang bagaimana jika kita ingin menambahkan sebuah tabel dan mengisi nilai ke dalam tabel tersebut.
Teknik membuat tabel di laravel kita sebut sebagai migration sedangkan teknik untuk membuat atau mengisi nilai ke dalam tabel kita sebut seeder. dua teknik ini sangat berguna untuk menyimpan data-data secara statis di dalam komponen laravel.
MEMBUAT DATA
Membuat Tabel
Kita umpamakan kita akan menambahkan sebuah tabel dengan nama tabel tema yang terdiri dari beberapa file seperti di dalam tabel berikut:
NO | TEMA | KETERANGAN |
---|---|---|
1 | Senam | Senam wajib tiap pagi hari |
2 | Rapat | Rapat Unsur Organisasi |
3 | Pertemuan | Pertemuan internal dan ekseternal |
Berdasarkan tabel tersebut dapat kita kelompokan:
- Nama tabel : temas, Pastikan terdapat karakter s dibelakang nama tabel.
- filed tabel : id_tema, tema, keterangan
- Nilai/ Isi tabel : Merupakan seeder
- Buka terminal di vsCode dan ketikkan perintah:
php artisan make:migration create_temas_table
Pastikan awal nama tabel terdapat create, dan di akhiri dengan table. sedangkan nama tabel di akhir dengan s.
- Buka struktur program. Cari di folder Database=>Migrations. Maka terdapat susunan file seperti berikut:
public function up(): void{Schema::create('temas', function (Blueprint $table) {$table->id('id_tema');$table->string('tema', 100);$table->string('keterangan')->nullable();$table->timestamps();});}
Script ini akan membuat nama field dari tabel tema. Setelah code diatas anda buat mari kita lakukan migrate tabel tersebut. Artinya tabel list akan dibuat atau dipindahkan ke dalam database. ketikan perintah ini
php artisan migrate
- integer('nama_kolom'): Menyimpan bilangan bulat. Cocok untuk ID, jumlah, atau nomor.
- bigInteger('nama_kolom'): Menyimpan bilangan bulat yang sangat besar. Berguna untuk ID, terutama saat menggunakan foreign key dari tabel yang sangat besar.
- float('nama_kolom'): Menyimpan angka dengan titik desimal.
- double('nama_kolom'): Menyimpan angka desimal presisi ganda.
- decimal('nama_kolom', $total, $places): Menyimpan angka desimal dengan presisi tetap. $total adalah jumlah digit total, dan $places adalah jumlah digit di belakang koma. Contoh: decimal('price', 8, 2).
- text('nama_kolom'): Menyimpan teks yang panjang, seperti deskripsi produk atau isi artikel.
- longText('nama_kolom'): Menyimpan teks yang sangat panjang, lebih besar dari text.
- json('nama_kolom'): Menyimpan data dalam format JSON. Berguna untuk menyimpan data terstruktur seperti pengaturan atau metadata.
- date('nama_kolom'): Menyimpan tanggal tanpa waktu, seperti YYYY-MM-DD.
- time('nama_kolom'): Menyimpan waktu tanpa tanggal.
- dateTime('nama_kolom'): Menyimpan tanggal dan waktu.
- timestamp('nama_kolom'): Menyimpan waktu dalam format timestamp, sering digunakan untuk waktu dibuat dan diubah.
- timestamps(): Ini adalah shortcut yang secara otomatis membuat dua kolom: created_at dan updated_at.
- boolean('nama_kolom'): Menyimpan nilai true atau false. Sangat berguna untuk status seperti is_active atau is_published.
- uuid('nama_kolom'): Menyimpan Universally Unique Identifier (UUID). Berguna sebagai pengganti ID numerik untuk alasan keamanan atau scalability.
- enum('nama_kolom', ['option1', 'option2']): Membatasi nilai kolom pada pilihan yang sudah ditentukan. Contoh: enum('status', ['draft', 'published', 'archived']).
Membuat Seeder
Seeder adalah sebuah kelas atau file di Laravel yang berfungsi untuk memasukkan data awal ke dalam tabel database. Seeder digunakan untuk mengisi database dengan data dummy atau data default yang diperlukan agar aplikasi dapat berfungsi. Ini sangat berguna dalam beberapa skenario:
- Pengembangan Lokal: Mengisi database dengan data sampel yang bisa digunakan oleh pengembang untuk menguji fungsionalitas aplikasi.
- Pengujian Otomatis: Menyediakan data yang konsisten untuk menjalankan pengujian otomatis (seperti unit testing atau feature testing).
- Distribusi Awal: Memastikan database memiliki data dasar yang diperlukan, seperti akun administrator pertama atau daftar kategori default, saat aplikasi diinstal untuk pertama kalinya.
Lalu bagaimana Seeder bekerja? Saat Anda membuat seeder, Anda mendefinisikan data yang akan dimasukkan ke dalam tabel. Kemudian, Anda menjalankan seeder tersebut menggunakan perintah Artisan.
Mari kita coba:
Ketikkan perintah berikut di Terminal:
php artisan make:seeder TemaSeeder
Buka struktur folder Database => Seeders. Dan cari file TemaSeeder.php. Buka file tersebut. Buatlah file code seperti berikut:
NB. Pastikan anda menambah use Illuminate\Support\Facades\DB;. Selanjutnya mari kita isi seeder diatas:
DB::table('temas')->insert([['tema' => 'Senam','keterangan' => 'Senam wajib tiap pagi hari',],['tema' => 'Rapat','keterangan' => 'Rapat Unsur Pimpinan',],['tema' => 'Pertemuan','keterangan' => 'Pertemuan internal dan eksternal',]]);
Nah sekaran saatnya kita eksekusi data seeder ke dalam record tabel temas. Kembali ke terminal dan ketikan perintah:
php artisan db:seed ListSeeder
Dan sekarang tabel temas anda sudah berisi data dari seeder.
Sampai disini anda sudah berhasil membuat tabel dan mengisi tabel tersebut dengan memanfaatkan teknologi migratison dan seeder yang di sediakan oleh laravel. Anda bisa berlatih menggunakan atau membuat tabel lain seperti yang telah dijelaskan pada materi diatas.
Bila anda sudah memahami konsepnya, mari kita latihan untuk membuat migration dan seeder baru berdasarkan data berikut:
NO | TEMA | JUDUL | WAKTU | KETERANGAN | FOTO |
---|---|---|---|---|---|
1 | Rapat | Rapat Harian | Rabu, 10.00 S/D Selesai | Rapat Harian | olahraga.jpg |
2 | Olah raga | 08.00 S/D Selesai | Olah rag rutin | Olahrag bersama unsur organisasi | pawai.jpg |
- Tabel : nama tabel adalah create_kegiatans_table
- skema : Berisikan field berikut, id_kegiatan, id_tema, judul, waktu, keterangan, foto
- seeder : Nama Seeder adalah KegiatanSeeder
DB::table('kegiatans')->insert([['id_tema' => '1','waktu' => 'Rabu, 08.00-08.30','judul' => 'Olahraga','keterangan' => 'Olahraga','foto' => 'olahraga.jpg',],['id_tema' => '1','waktu' => 'Kamis, 08.00-08.30','judul' => 'Olahraga','keterangan' => 'Olahraga','foto' => 'olahraga.jpg',]]);