Beberapa waktu yang lalu, saya menangani pengembangan web yang harus terintegrasi dengan sistem yang sudah ada. Akun yang dipakai untuk login ke dalam web yang saya kembangkan itu pun akun dari sistem yang saat ini sudah berjalan. Selain data akun, perlu juga data pendukung lainnya untuk keperluan development web. Karena belum ada database yang bisa digunakan untuk keperluan development, akhirnya saya membuat database khusus untuk development dan datanya pun digenerate langsung menggunakan library faker. Solusi ini biasanya disebut Database Seeding dan saya coba terapkan database seeding ini di codeigniter 4 untuk generate dummy data.
Di Dokumentasi codeigniter 4 tentang Database Seeding, Database seeding merupakan salah satu cara yang memudahkan developer dan biasa digunakan untuk menambahkan data ke dalam database. Sebetulnya bisa saja kita insert langsung kalau datanya sedikit. Nah kalau datanya banyak? ratusan? ribuan? ga mungkin kita tambahkan satu satu datanya. Jadi database seeding ini benar-benar mempermudah untuk membuat atau generate dummy data di project CodeIgniter 4 dan tentu untuk framework lainnya.
Di tutorial Database seeder CodeIgniter 4 ini, supaya sample datanya kelihatan seperti data beneran, kita akan pakai Library Faker. Library faker ini biasa digunakan untuk generate data seperti nama, alamat, email, text dan lainnya. Oh iya, Library Faker ini sudah include ketika kita install CodeIgniter 4, jadi kita tidak perlu install secara manual. Untuk memastikan, kita bisa buka file composer.json
.
{
"name": "codeigniter4/appstarter",
"type": "project",
"description": "CodeIgniter4 starter app",
"homepage": "https://codeigniter.com",
"license": "MIT",
"require": {
"php": "^7.4 || ^8.0",
"codeigniter4/framework": "^4.0"
},
"require-dev": {
"fakerphp/faker": "^1.9",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "^9.1"
},
"suggest": {
"ext-fileinfo": "Improves mime type detection for files"
},
"autoload": {
"exclude-from-classmap": [
"**/Database/Migrations/**"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\Support\\": "tests/_support"
}
},
"scripts": {
"test": "phpunit"
},
"support": {
"forum": "http://forum.codeigniter.com/",
"source": "https://github.com/codeigniter4/CodeIgniter4",
"slack": "https://codeigniterchat.slack.com"
}
}
Bisa kita perhatikan di bagian require-dev
, terdapat library fakerphp/faker
yang sudah terinstall.
Daftar Isi
Pada tutorial Database Seeder CodeIgniter 4 ini kita akan membuat sample project untuk keperluan generate dummy data. Data yang akan kita coba generate adalah data users
. Di dalam tabel users
ini nanti ada field untuk id
, name
, email
, dan password
.
Output sample project ini adalah berupa data yang berhasil digenerate ketika database seeder kita run. Kita bisa pastikan apakah data sudah berhasil digenerate dengan mengecek table users
.
Langkah pertama adalah instalasi codeigniter 4. Dalam proses instalasi codeigniter 4, cara yang akan digunakan adalah instalasi menggunakan composer
. Hal ini dilakukan supaya kita terbiasa menggunakan composer
, dan boleh jadi nanti kedepannya kita bisa buat library sendiri.
Sekarang kita buka terminal atau cmd. Di dalam terminal eksekusi composer command
ini:
composer create-project codeigniter4/appstarter dbseeder-example
Seperti yang kita lihat, nama project kita cukup sederhana dbseeder-example
, disesuaikan dengan tujuan tutorial ini. Oke seperti biasa kita tunggu proses instalasinya selesai.
Pada tahapan kedua ini kita akan mengatur konfigurasi project, seperti database dan base url. Sebagai pengingat ada beberapa cara untuk mengatur konfigurasi. Yang pertama itu kita bisa atur langsung konfigurasi yang ada di direktori app/Config
, seperti pengaturan base url di file App.php
atau database di file Database.php
yang ada di direktori tersebut. Cara kedua adalah kita atur semua konfigurasi di file .env
. Di tutorial ini kita akan pakai cara kedua, supaya terbiasa mengatur konfigurasi untuk keperluan di environment production dan supaya credentials seperti akun database tidak ikut ke push ketika kita menggunakan git
repositori seperti github atau gitlab.
Sebelum mengatur konfigurasi, kita pindah dulu ke direktori project, yaitu dbseeder-example
. Eksekusi command ini di terminal, untuk pindah ke direktori project:
cd dbseeder-example
Kalau kita perhatikan di dalam folder project kita terdapat beberapa file, diantaranya file env
(tanpa tanda titik). Kita copy file ini env
ini, lalu kita rename menjadi .env
. Buka lagi terminalnya lalu jalankan command ini untuk copy file env
menjadi file .env
.
cp env .env
Setelah command di atas dieksekusi, kita bisa lihat file baru dengan nama .env
.
Selanjutnya kita buka project kita di text editor. kita bisa open folder di text editor langsung. Kalau text editor yang digunakan visual studio code, bisa juga ketik command ini untuk buka project di visual studio code.
code .
Selanjutnya buka file .env
yang sebelumnya sudah kita copy. Di dalamnya cari baris kode ini.
# CI_ENVIRONMENT = production
# app.baseURL = ''
# database.default.hostname = localhost
# database.default.database = ci4
# database.default.username = root
# database.default.password = root
# database.default.DBDriver = MySQLi
hapus tanda #
, lalu sesuaikan menjadi seperti ini:
CI_ENVIRONMENT = development
app.baseURL = 'http://localhost:8080/'
database.default.hostname = localhost
database.default.database = db_ci4
database.default.username = root
database.default.password = passwordmysqlkita
database.default.DBDriver = MySQLi
Bisa kita lihat di baris kode di atas, kita atur environmentnya CI_ENVIRONMENT
menjadi development, supaya jikalau seandainya nanti ada error, petunjuk errornya ini bisa langsung ditampilkan di browser. Konfigurasi selanjutnya adalah base url atau app.baseURL
dan juga konfigurasi database. Untuk konfigurasi database, nama databasenya db_ci4
dan untuk username & passwordnya sesuaikan dengan username & password yang kamu gunakan.
Jangan lupa, save file .env
.
Setelah pengaturan database selesai, langkah berikutnya adalah membuat database. Buka phpMyAdmin, lalu buat database baru dengan nama db_ci4
. Ya, nama databasenya sesuai dengan nama database yang ada di file .env
yang sebelumnya sudah kita modifikasi.
Untuk pembuatan tabel, kita ga langsung buat tabelnya melalui phpMyAdmin. Di sini kita belajar membuat tabel menggunakan migration punya codeigniter 4. Nah sebagai contoh untuk nama tabelnya adalah users
.
Kita buka kembali terminal, lalu eksekusi spark
command ini:
php spark migrate:create Users
Command di atas adalah command untuk membuat file migration baru. Kita cek filenya di direktori app/Database/Migrations
. Nah di direktori tersebut ada file dengan format nama YYYY-MM-DD-HHIISS_namatable.php
. File hasil generate secara otomatis ketika tutorial ini dibuat 2020-12-27-145550_Users.php
. Ya kita buka filenya, lalu kita modifikasi method up()
dan method down()
.
<?php namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class Users extends Migration
{
public function up()
{
$this->forge->addField([
'id' => [
'type' => 'INT',
'unsigned' => TRUE,
'auto_increment' => TRUE
],
'name' => [
'type' => 'VARCHAR',
'constraint' => 255,
'null' => FALSE,
],
'email' => [
'type' => 'VARCHAR',
'constraint' => 255,
'null' => FALSE,
'unique' => TRUE,
],
'password' => [
'type' => 'VARCHAR',
'constraint' => 255,
'null' => FALSE,
],
'created_at' => [
'type' => 'datetime',
'null' => TRUE
],
'updated_at' => [
'type' => 'datetime',
'null' => TRUE
]
]);
$this->forge->addKey('id', TRUE);
$this->forge->createTable('users');
}
//--------------------------------------------------------------------
public function down()
{
$this->forge->dropTable('users');
}
}
Setelah selesai ketik baris kode di atas. Save kembali file migrationnya. Selanjutnya kita run perintah migrate
di terminal. Buka terminal, lalu eksekusi command ini:
php spark migrate
Setelah selesai, kita bisa lihat di database db_ci4
ada dua tabel baru yaitu tabel migrations
dan juga tabel users
.
Tahapan berikutnya adalah inti dari tutorial ini yaitu membuat database seeder. Kita buat file seeder di direktori app\Database\Seeds
dengan nama UsersSeeder.php
atau kita bisa juga coba gunakan spark
command di bawah ini untuk generate file seeder.
php spark make:seeder UsersSeeder
Selanjutnya kita sesuaikan baris kode berikut ini di dalam file seeder yang baru saja dibuat.
<?php
namespace App\Database\Seeds;
class UsersSeeder extends \CodeIgniter\Database\Seeder
{
public function run()
{
$faker = \Faker\Factory::create('id_ID');
for ($i = 0; $i < 100; $i++) {
$gender = $faker->randomElements(['male', 'female'])[0];
$data = [
'name' => $faker->firstName($gender),
'email' => $faker->email,
'password' => password_hash('1234567', PASSWORD_DEFAULT),
'created_at' => date("Y-m-d H:i:s"),
];
print_r($data);
$this->db->table('users')->insert($data);
}
}
}
Save kembali file seeder UsersSeeder.php
.
Seperti yang bisa kita lihat di baris kode di atas. Nama filenya disesuaikan dengan nama class, yaitu UsersSeeder
. Class UsersSeeder
ini kita jadikan turunan dari parent class \CodeIgniter\Database\Seeder
.
Untuk generate dummy data, kita gunakan library Faker, yang sudah terinstall ketika kita install CodeIgniter. Sebagai contoh data yang kita generate ada 99 data. Dan untuk melakukan proses insert data, kita gunakan query builder.
Selanjutnya kita coba running seeder untuk generate dummy data. Buka kembali terminal, lalu eksekusi spark
command:
php spark db:seed UsersSeeder
Setelah command di atas selesai dieksekusi, kita bisa lihat output seperti di bawah ini.
**dbseeder-example** **git:(****main****)** **✗** php spark db:seed UsersSeeder
CodeIgniter v4.2.10 Command Line Tool - Server Time: 2022-12-19 17:38:06 UTC-06:00
Seeded: App\Database\Seeds\UsersSeeder
Array
(
[name] => Kamaria
[email] => [email protected]
[password] => $2y$10$5ZdTp75uHYOUXWFLN0luxuayHzo5UUOf6zN7di8BAf79GcraHYacO
[created_at] => 2022-12-19 17:38:06
)
Array
(
[name] => Jasmin
[email] => [email protected]
[password] => $2y$10$yAWAl8FHVMoREdS3/BGMSu7mCHiqOdQJrJilfIZoWRtt/U7KI4nJu
[created_at] => 2022-12-19 17:38:06
)
... dan output lainnya
Untuk memastikan apakah data nya berhasil di-generate dan berhasil disimpan di database, kita bisa buka phpmyadmin dan kita cek table users
. Ya, datanya tersimpan sebanyak data yang sudah kita atur di file UsersSeeder.php
.
Adakalanya kita perlu sample data pada saat testing web yang kita kembangkan maupun pada saat development. Data yang kita perlukan itu kadang tidak hanya lima baris data. Kadang bisa ratusan, kadang bisa ribuan. Kombinasi Database Seeding di CodeIgniter 4 dan library Faker ini memudahkan kita sebagai developer untuk generate dummy data yang bisa kita gunakan untuk keperluan development.
Solusi ini sudah bermanfaat untukku. Kawan, semoga bermanfaat untukmu juga.
© 2024 qadrLabs . All rights reserved. 000515268