Tutorial Codeigniter 4 – Part 8 – Mengenal Fitur Migration, Seeding dan library faker di Codeigniter 4
Selamat datang di tutorial warung belajar, melanjutkan pembahasan mengenai tutorial belajar codeigniter 4, dalam tutorial part 8 ini kita akan membahas mengenai migration, seeding dan pembuatan dummy data menggunakan Faker.
Ketiga pembahasan diatas erat hubungannya dengan pembuatan table di database, serta entri data ditabel tersebut.
Baik kita akan mulai terlebih dahulu dengan pembahasan mengenai migration.
Tutorial Codeigniter 4 – Part 8 – Mengenal Fitur Migration, Seeding, dan membuat dummy data dengan Library Faker
Buat teman – teman yang terbiasa dalam belajar menggunakan tutorial video bisa belajar di tutorial video kita yang ada di youtube, bisa play video dibawah ini, jika berkenan bisa subscribe untuk berlangganan video warung belajar.
Migration
Migration adalah fitur di codeigniter 4 yang memungkinkan anda untuk membuat atau mengubah struktur table di database menggunakan perintah di codeigniter, jadi jika biasanya anda membuat atau mengubah struktur table di database menggunakan SQL Editor semacam phpMyAdmin, SQL Yog, atau HeidiSQL atau SQL editor lainnya, pada kesempatan kali ini kita tidak perlu menggunakan cara itu, kita cukup menuliskan perintah di bagian migration, dan menjalankan migration maka struktur table di database akan terbuat.
Fitur ini bisa anda maksimalkan jika anda dalam proses pembuatan sistem bekerja dalam tim, maka tim anda tidak perlu membuat databasenya, tinggal jalankan file migration maka table di database akan terbuat.
Baik kita akan mulai untuk belajar fitur migration, saya asumsikan teman – teman sudah memiliki project codeigniter 4, dalam contoh ini saya sudah install codeigniter 4 didalam pc saya, untuk nama foldernya adalah ci4app, saya simpan di C:/xampp/htdocs
Berikutnya silahkan buka terminal dan arahkan ke direktori tersebut :
Lalu berikutnya silahkan tuliskan perintah :
1 |
php spark migrate:create Pegawai |
lalu tekan enter
Maka akan terbuat sebuah file migration yang tersimpan di dalam folder : App/Database/Migrations
terdapat 1 file migration dengan akhiran nama file adalah Pegawai itu adalah file migration yang kita buat sebelumnya.
Silahkan buka file tersebut, didalam file tersebut terdapat class yang memiliki 2 method :
- Method up : akan berisi perintah migration untuk membuat struktur table di database, perintah dibagian ini akan dijalankan saat migration dijalankan
- Method down : akan berisi perintah yang akan dijalankan jika migration dibatalkan.
Ubah Code dari file migration tersebut menjadi seperti berikut ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php namespace App\Database\Migrations; use CodeIgniter\Database\Migration; class Pegawai extends Migration { public function up() { $this->forge->addField([ 'id_pegawai' => [ 'type' => 'INT', 'constraint' => 11, 'unsigned' => true, 'auto_increment' => true, ], 'nama' => [ 'type' => 'VARCHAR', 'constraint' => '255', ], 'jenis_kelamin' => [ 'type' => 'ENUM', 'constraint' => "'pria','wanita'", ], 'no_telp' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'tanggal_lahir' => [ 'type' => 'DATE' ], 'alamat' => [ 'type' => 'VARCHAR', 'constraint' => '255', ], 'created_at' => [ 'type' => 'DATETIME', 'null' => true, ], 'updated_at' => [ 'type' => 'DATETIME', 'null' => true, ] ]); $this->forge->addPrimaryKey('id_pegawai'); $this->forge->createTable('pegawai'); } //-------------------------------------------------------------------- public function down() { $this->forge->dropTable('pegawai'); } } |
Keterangan :
Perintah yang kita tulis didalam method up digunakan untuk membuat table dengan nama pegawai dengan kolom sebagai berikut :
- id_pegawai
- tipe integer
- Panjang digit 11
- Unsigned true yang artinya hanya bernilai positif saja angkanya
- Dan bersifat autoincrement (nilainya akan terisi otomatis)
- nama
- tipe varchar
- Panjang karakter 255
- jenis_kelamin
- Tipe ENUM
- Dengan nilai (“pria”,”wanita”)
- no_telp
- tipe Varchar
- Panjang Karakter 100
- tanggal_lahir
- tipe Date digunakan untuk menyimpan data tanggal
- alamat
- tipe Varchar
- Panjang karakter 255
- Created_at
- Tipe datetime digunakan untuk menyimpan data tanggal dan waktu
- Bisa bernilai null
- Updated_at
- Tipe datetime digunakan untuk menyimpan data tanggal dan waktu
- Bisa bernilai null
- Berikutnya kita set primary key adalah id_pegawai
Perintah yang kita tulis dibagian method down adalah menghapus tabel pegawai, perintah ini dijalankan Ketika file migration dirollback
1 |
$this->forge->dropTable('pegawai'); |
Berikutnya karena kita akan menjalakan file migration, dimana kita perlu membuat databasenya terlebih dahulu, dalam contoh ini kita akan buat databasenya dengan nama db_pegawai, dan kita akan gunakan PhpMyadmin karena saya menggunakan Xampp, Langkah – langkahnya adalah sebagai berikut :
- Untuk pengguna Xampp jangan lupa jalankan service apache, dan MySQL
- Lalu akses alamat localhost/phpmyadmin
- Lalu klik menu Databases
- Buat database baru dengan nama db_pegawai, lalu klik tombol Create
Berikutnya kita perlu setting bagian codeigniter 4 agar dapat terkoneksi dengan database, Langkah – langkahnya adalah sebagai berikut :
- Pada folder codeigniter 4 ada file dengan nama env silahkan rename menjadi .env (tambahkan titik dibagian awal nama file)
- Lalu buka file tersebut, lalu ubah konfigurasi database yang berada pada line 52 – 56, menjadi seperti berikut ini :
Keterangan :
- Hilangkan tanda # diawal perintah pada Line 52 – 56
- Hostname (Line 52) adalah alamat server databasenya, karena ini database local saya gunakan localhost
- Database (Line 53) adalah nama dari database, dalam contoh ini kita tuliskan db_pegawai
- Username (Line 54) adalah nama dari user untuk mengakses database, dalam contoh ini kita tuliskan root (Default user di xampp)
- Password (Line 55) adalah password untuk user yang digunakan mengakses database, dalam contoh ini default password untuk username root adalah kosong
- DBDriver (Line 56) adalah Driver yang kita gunakan, karena kita gunakan MySQLi maka disini kita tuliskan MySQLi
berikutnya silahkan simpan perubahan dari file .env
Setelah kita setting bagian file .env agar Codeigniter dapat terkoneksi dengan database, berikutnya kita sudah bisa menjalankan perintah Migration, silahkan kembali ke terminal, lalu jalankan perintah :
1 |
Php spark migrate |
lalu tekan enter
Dari keterangan gambar diatas, kita sudah berhasil untuk menjalankan file migration.
Berikutnya kita coba mengakses database db_pegawai yang sudah kita buat sebelumnya dengan menggunakan phpmyadmin, langkah – langkahnya adalah sebagai berikut ini :
- silahkan buka localhost/phpmyadmin
- lalu buka database db_pegawai
Keterangan :
Terlihat ada 2 tabel didalam database db_pegawai
- Table migrations untuk mencatat log file migration yang sudah dijalankan
- Tabel pegawai adalah table yang kita buat dengan menjalankan file migration sebelumnya.
Anda bisa membuka table pegawai untuk melihat ada kolom apa saja didalamnya, bisa klik table pegawai, dan masuk kedalam tab Structure
Terlihat untuk kolomnya sudah sesuai yang kita buat dibagian migration, sampai disini kita sudah belajar bagaimana cara membuat table dengan menggunakan fitur migration dibagian Codeigniter 4
Menambahkan Kolom baru di tabel yang sudah ada di database
Berikutnya Semisal kita ingin menambahkan kolom baru semisal kolom email didalam table pegawai, kita bisa menggunakan file migration lagi, Langkah – langkahnya adalah sebagai berikut :
- Buka terminal jangan lupa masuk ke direktori project codeigniter anda, lalu ketikkan perintah :
1php spark migrate:create addEmailPegawai - Maka akan terbuat file migration baru didalam folder App/Database/Migrations
- Buka file tersebut, lalu ubah kode didalamnya menjadi seperti berikut ini :
1234567891011121314151617181920212223242526<?phpnamespace App\Database\Migrations;use CodeIgniter\Database\Migration;class AddEmailPegawai extends Migration{public function up(){$this->forge->addColumn('pegawai', ['email' => ['type' => 'VARCHAR','constraint' => '100','after' => 'alamat']]);}//--------------------------------------------------------------------public function down(){$this->forge->dropColumn('pegawai', 'email');}}Pada method up kita membuat perintah untuk menambahkan kolom email didalam tabel pegawai dengan struktur kolom adalah :
- Tipe adalah varchar
- Panjang karakter 100
- Lalu kolom diletakkan setelah kolom alamat
Pada method down kita tuliskan perintah untuk menghapus kolom email didalam tabel pegawai, perintah ini dijalankan saat migration di rollback.
- Baik setelah kita buat file migration dan isi code didalamnya, berikutnya kita bisa menjalankan file migration tersebut, silahkan buka terminal Kembali, dan tuliskan perintah : php spark migrate
- Terlihat kita sudah berhasil menjalankan file migration
Berikutnya kita buka lagi phpmyadmin :
- Akses dengan alamat localhost/phpmyadmin
- Masuk kedatabase db_pegawai
- Masuk ke tabel pegawai
- Masuk kedalam tab structure
Terlihat sudah ada kolom email setelah kolom alamat didalam tabel pegawai.
Untuk beberapa perintah lainnya dibagian migration antara lain :
- php spark migrate:rollback = digunakan untuk membatalkan proses migration
- php spark migrate:refresh = digunakan untuk membatalkan seluruh proses migration lalu menjalankan ulang proses migration
- php spark migrate:status = digunakan untuk menampilkan informasi migration yang telah dijalankan
Seeding
Berikutnya kita akan membahas mengenai fitur seeding di codeigniter 4, secara sederhana fitur seeding ini digunakan untuk insert data ke tabel di database.
Jadi anda tidak perlu insert data secara manual melalui SQL Editor, anda cukup menuliskan perintah dibagian seeding, lalu menjalankan file seeding tersebut, maka data akan diinsert kedalam tabel di database.
Baik kita akan mulai untuk belajar menggunakan fitur seeding, dalam contoh ini kita akan insert data kedalam tabel pegawai yang barusan kita buat menggunakan migration, untuk Langkah – langkahnya adalah sebagai berikut ini :
1.Kita buat dulu file seeder, anda bisa masuk kedalam terminal, silahkan masuk kedalam project codeigniter, lalu tuliskan perintah dibawah ini :
1 |
php spark make:seeder PegawaiSeeder |
Lalu tekan enter.
Keterangan :
- PegawaiSeeder adalah nama file yang nanti akan digenerate melalui perintah terminal
- Terlihat sudah berhasil dibuat file PegawaiSeeder.php dimana file tersebut disimpan didalam folder App/Database/Seeds
2. Berikutnya silahkan buka file tersebut, terdapat method run didalamnya, pada method run inilah kita akan menuliskan perintah untuk insert data ke tabel database, silahkan ubah code menjadi seperti berikut ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php namespace App\Database\Seeds; use CodeIgniter\Database\Seeder; use CodeIgniter\I18n\Time; class PegawaiSeeder extends Seeder { public function run() { $data = [ [ 'nama' => 'Anton Prakarsa', 'jenis_kelamin' => 'pria', 'no_telp' => '081234555678', 'tanggal_lahir' => '1990-01-01', 'alamat' => 'Jl.Mawar No. 70 Wonoayu Sidoarjo', 'email' => 'budi.prakarsa@gmail.com', 'created_at' => Time::now() ], [ 'nama' => 'Dita Anggraini', 'jenis_kelamin' => 'wanita', 'no_telp' => '08787654321', 'tanggal_lahir' => '1992-11-11', 'alamat' => 'Jl.Melati No. 150 Buduran Sidoarjo', 'email' => 'dita.anggraini@gmail.com', 'created_at' => Time::now() ] ]; $this->db->table('pegawai')->insertBatch($data); } } |
Keterangan :
- Line 6 kita gunakan class Time agar dapat menggunakan waktu saat ini untuk kebutuhan kolom created_at
- Pada Line 12 – 31 kita buat array multidimensi yang berisi 2 data pegawai, dimana kita sudah set untuk bagian key array kita sesuaikan dengan kolom di tabel pegawai
- Pada Line 32 kita akan insert data ke tabel pegawai menggunakan perintah insertBatch karena kita insert beberapa data sekaligus menggunakan data array
3. Berikutnya kita akan menjalankan file seeder ini, agar codeigniter melakukan insert data ke tabel pegawai di database, silahkan buka terminal dan jalankan perintah dibawah ini :
1 |
Php spark db:seed PegawaiSeeder |
Lalu tekan enter.
4. Berikutnya kita bisa cek data yang ada didalam tabel pegawai, anda bisa menggunakan phpMyAdmin hasilnya seperti berikut ini :
Maka ada 2 data pegawai yang kita insert melalui file Seeder.
Menggunakan Library Faker untuk generate Dummy Data
Setelah dibagian sebelumnya kita sudah membuat file migration untuk kebutuhan pembuatan tabel pegawai, serta insert data ke tabel database menggunakan seeding, berikutnya kita akan belajar untuk generate dummy data melalui library Faker.
Library Faker sudah include saat instalasi Codeigniter 4, dengan library ini anda bisa generate dummy data untuk kebutuhan sample data di tabel.
Untuk Dokumentasi Resmi dari Library Faker bisa anda akses di GITHUB : https://github.com/fzaninotto/Faker
Dalam contoh ini kita akan membuat 100 dummy data di tabel pegawai, kita tetap akan membuat file seeder tetapi didalamnya kita menggunakan library faker untuk generate dummy data, baik Langkah – langkahnya adalah sebagai berikut :
1. Buat file seeder melalui terminal, semisal Namanya kita buat PegawaiFakerSeeder, maka kita bisa menuliskan perintah di terminal sebagai berikut ini :
1 |
Php spark make:seeder PegawaiFakerSeeder |
Lalu tekan enter
2. Berikutnya buka file PegawaiFakerSeeder.php didalam folder app/Database/Seeds
Ubah codenya menjadi dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php namespace App\Database\Seeds; use CodeIgniter\Database\Seeder; use CodeIgniter\I18n\Time; class PegawaiFakerSeeder extends Seeder { public function run() { $faker = \Faker\Factory::create('id_ID'); for ($i = 0; $i < 100; $i++) { $jk = $faker->randomElement(['pria', 'wanita']); if ($jk == "pria") { $gender = "male"; } else { $gender = "female"; } $data = [ 'nama' => $faker->name($gender), 'jenis_kelamin' => $jk, 'no_telp' => $faker->phoneNumber, 'tanggal_lahir' => $faker->date('Y-m-d', 'now'), 'alamat' => $faker->address, 'email' => $faker->email, 'created_at' => Time::now() ]; $this->db->table('pegawai')->insert($data); } } } |
Keterangan :
- Line 6 kita gunakan class time untuk mendapatkan waktu saat ini, untuk mengisi value pada kolom created_at
- Line 12 kita buat variabel $faker yang digunakan sebagai object dari class Factory dengan method static create, pada method static crate kita gunakan parameter ‘id_ID’ agar dummy data kita nanti berisi informasi data dari Indonesia
- Line 14 kita gunakan perintah perulangan for agar melalui perulangan sebanyak 100 kali
- Line 15 kita gunakan perintah randomElement agar melakukan random string, untuk mendapatkan jenis kelamin pria atau wanita, hasil jenis kelamin ini disimpan pada variabel $jk
- Line 16 – 20 kita lakukan pengecekan jika variabel $jk = pria, maka variabel $gender bernilai male, tapi jika variabel $jk = wanita maka variabel $gender bernilai female, variabel $gender ini nanti akan kita gunakan untuk menentukan nama orangnya pria atau wanita, karena faker hanya mendeteksi nilai male dan female
- Line 21 – 29 kita buat array untuk data pegawai, dimana masing – masing kolom kita sesuaikan nilainya dengan method di library faker :
- Line 22 kita gunakan method name dengan menyertakan parameter $gender, untuk menentukan nama yang dihasilkan itu nama pria atau wanita
- Line 23 kita hanya insert data pada kolom jenis_kelamin dengan data di variabel $jk hasil dari randomElement di Line 13
- Line 24 kita insert data di kolom no_telp dengan method phoneNumber
- Line 25 kita insert data di kolom tanggal_lahir dengan method date dengan mengisi 2 parameter, yang pertama adalah format tanggalnya, dan yang kedua adalah nilai maksimal dari tanggalnya yaitu hari ini
- Line 26 kita insert data di kolom alamat menggunakan method address
- Line 27 kita insert data di kolom email menggunakan method email
- Line 28 kita insert data di tabel created_at dengan waktu saat data diinsert sehingga kita gunakan method static now di class Time
- Line 30 kita insert data ke tabel pegawai menggunakan data di variabel $data yang berisi array, insert data ini dilakukan setiap kali perulangan, karena perulangan dilakukan 100 kali, sehingga ada 100 data yang diinsert
4. Berikutnya kita akan jalankan file seeder ini, anda bisa buka terminal lalu jalankan perintah :
1 |
Php spark db:seed PegawaiFakerSeeder |
Lalu tekan enter
5. Setelah file seeder sudah dijalankan berikutnya kita bisa cek record yang ada didalam tabel pegawai, anda bisa menggunakan phpmyadmin
Maka akan ada 100 data baru didalam tabel pegawai.
Jadi kurang lebih seperti itu ya teman – teman pembahasan dari tutorial kali ini , kita sudah belajar bagaimana cara membuat migration, seeder, penggunaan library faker untuk kebutuhan generate dummy data.
Jika ada yang ingin didiskusikan silahkan di dalam kolom komentar, sampai jumpa di tutorial selanjutnya.
Pingback: Tutorial Codeigniter 4 – Part 12 – Membuat Fitur Upload dan Download File di Codeigniter 4 | Warung Belajar