Pendahuluan
Migrasi database adalah salah satu fitur penting di Laravel yang memungkinkan Anda mengelola skema database dengan mudah. Dengan menggunakan migrasi, Anda dapat membuat, mengubah, dan menghapus tabel tanpa harus menulis SQL secara manual. Artikel ini akan membahas cara membuat dan mengelola migrasi database di Laravel, termasuk penggunaan Seeder dan Factory untuk pengujian data.
Persiapan
Sebelum memulai, pastikan Anda sudah memiliki lingkungan Laravel yang sudah terpasang. Anda juga perlu mengatur koneksi database di file .env
.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user
DB_PASSWORD=password
Membuat Migrasi
Untuk membuat migrasi, Anda dapat menggunakan perintah artisan
berikut:
php artisan make:migration create_nama_tabel_table
Perintah ini akan membuat file migrasi baru di direktori database/migrations
. File migrasi tersebut berisi dua metode utama: up
dan down
. Metode up
digunakan untuk mendefinisikan perubahan yang akan dilakukan pada database, sedangkan metode down
digunakan untuk membatalkan perubahan tersebut.
Contoh Migrasi
Berikut adalah contoh migrasi untuk membuat tabel posts
:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
Menjalankan Migrasi
Untuk menjalankan semua migrasi, gunakan perintah:
php artisan migrate
Perintah ini akan mengeksekusi semua file migrasi yang ada di direktori database/migrations
dan menerapkan perubahan pada database.
Mengubah Tabel yang Sudah Ada
Jika Anda ingin mengubah tabel yang sudah ada, Anda bisa membuat migrasi baru menggunakan perintah:
php artisan make:migration add_nama_kolom_to_posts_table --table=posts
Contoh migrasi untuk menambahkan kolom author
ke tabel posts
:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAuthorToPostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->string('author')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn('author');
});
}
}
Menggunakan Seeder
Seeder digunakan untuk mengisi tabel dengan data awal. Anda bisa membuat seeder menggunakan perintah:
php artisan make:seeder PostsTableSeeder
Contoh seeder untuk tabel posts
:
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class PostsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('posts')->insert([
'title' => 'First Post',
'content' => 'This is the content of the first post.',
'author' => 'Author Name',
'created_at' => now(),
'updated_at' => now(),
]);
}
}
Untuk menjalankan seeder, gunakan perintah:
php artisan db:seed --class=PostsTableSeeder
Menggunakan Factory
Factory digunakan untuk membuat data palsu untuk pengujian. Anda bisa membuat factory menggunakan perintah:
php artisan make:factory PostFactory
Contoh factory untuk model Post
:
use Faker\Generator as Faker;
$factory->define(App\Post::class, function (Faker $faker) {
return [
'title' => $faker->sentence,
'content' => $faker->paragraph,
'author' => $faker->name,
'created_at' => now(),
'updated_at' => now(),
];
});
Untuk membuat data palsu menggunakan factory, Anda bisa menggunakan tinker atau menambahkannya di seeder:
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
factory(App\Post::class, 50)->create();
}
}
Kesimpulan
Migrasi database adalah fitur yang sangat berguna di Laravel untuk mengelola skema database dengan mudah. Dengan migrasi, seeder, dan factory, Anda dapat membuat, mengubah, dan mengisi tabel database dengan data awal dan data pengujian dengan cepat dan efisien. Menguasai fitur-fitur ini akan sangat membantu dalam pengembangan aplikasi Laravel Anda.