CRUD : Migrate Tabel Dan Seeder pada Laravel

Barintek
0

 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
    Mari kita mulai membuat migration terlebih dahulu
  • 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:


    Terdapat tabel yang sudah kita buat tadi. Perhatikan yang ditandai dengan lingkaran putih, terdapat data, kode dan nama tabel. jangan khawatir nama tabel kita di database akan tetap menjadi temas. Sekarang buka file tersebut. Kita akan menambahkan field ke dalam tabel tersebut. Field ini kita ketikan di dalam scema. berikut programnya:
 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

    Sekarang anda cek ke dalam database db_agenda. Terdapat sebuah tabel baru bernama temas. Perhatikan lagi saat anda membuat skema tadi. id_tema diberikan tipe data berupa id. Artinya disini id_tema akan dijadikan primary_key dan bersifat auto_Increment. Sedangkan tema berupa string dengan panjang maksimal 100 karakter (ini opsion saja. anda bisa untuk tidak menulis panjang karakter, sehingga panjang akan ditulis secara default). Field keterangan bersifat nullable, artinya file boleh kosong. 
    Selain id dan string, Laravel menyediakan berbagai jenis kolom untuk memenuhi kebutuhan database yang berbeda. Anda bisa menggunakan jenis-jenis kolom ini di dalam file migrasi Anda untuk mendefinisikan struktur tabel secara spesifik. Berikut adalah beberapa jenis kolom yang paling umum dan sering digunakan di Laravel:

Tipe Kolom Angka (Numeric)
  1. integer('nama_kolom'): Menyimpan bilangan bulat. Cocok untuk ID, jumlah, atau nomor.
  2. bigInteger('nama_kolom'): Menyimpan bilangan bulat yang sangat besar. Berguna untuk ID, terutama saat menggunakan foreign key dari tabel yang sangat besar.
  3. float('nama_kolom'): Menyimpan angka dengan titik desimal.
  4. double('nama_kolom'): Menyimpan angka desimal presisi ganda.
  5. 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).

Tipe Kolom Teks (Text)
  1. text('nama_kolom'): Menyimpan teks yang panjang, seperti deskripsi produk atau isi artikel.
  2. longText('nama_kolom'): Menyimpan teks yang sangat panjang, lebih besar dari text.
  3. json('nama_kolom'): Menyimpan data dalam format JSON. Berguna untuk menyimpan data terstruktur seperti pengaturan atau metadata.

Tipe Kolom Tanggal dan Waktu (Date/Time)
  1. date('nama_kolom'): Menyimpan tanggal tanpa waktu, seperti YYYY-MM-DD.
  2. time('nama_kolom'): Menyimpan waktu tanpa tanggal.
  3. dateTime('nama_kolom'): Menyimpan tanggal dan waktu.
  4. timestamp('nama_kolom'): Menyimpan waktu dalam format timestamp, sering digunakan untuk waktu dibuat dan diubah.
  5. timestamps(): Ini adalah shortcut yang secara otomatis membuat dua kolom: created_at dan updated_at.

Tipe Kolom Lainnya
  1. boolean('nama_kolom'): Menyimpan nilai true atau false. Sangat berguna untuk status seperti is_active atau is_published.
  2. uuid('nama_kolom'): Menyimpan Universally Unique Identifier (UUID). Berguna sebagai pengganti ID numerik untuk alasan keamanan atau scalability.
  3. 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:

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; // Tambahkan Library DB

class ListSeeder extends Seeder
{
    public function run(): void
    {
        DB::table('temas')->insert([ // Sesuaikan dengan nama Tabel
           ................
        ]);
    }
}

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

    Berikut bentuk rancangannya:
  • Tabel : nama tabel adalah create_kegiatans_table
  • skema : Berisikan field berikut, id_kegiatan, id_tema, judul, waktu, keterangan, foto
  • seeder : Nama Seeder adalah KegiatanSeeder

Berikut bentuk skema:
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',
    ]
]);

    Selamat Bekerja
Tags

Posting Komentar

0Komentar

Posting Komentar (0)