Skip to main content

Laravel Migrations İle Veritabanı Tabloları Nasıl Oluşturulur ve Yönetilir? ⚙️


💡 Bu Rehberde Ne Öğreneceksiniz

Bu rehberde, Laravel’in Migration (göç) sistemini kullanarak veritabanı tablolarınızı nasıl oluşturacağınızı, yöneteceğinizi ve gerektiğinde sıfırdan kuracağınızı öğreneceksiniz. Migration sistemi, veritabanı değişikliklerini kod tabanında sürüm kontrolüyle yönetmenizi sağlar.


🧠 Teknik Özet

  • Migration: Veritabanı tablolarını kodla oluşturma, düzenleme ve silme yöntemi.
  • Amaç: SQL sorgularına girmeden tablo yapısını yönetmek.
  • Araç: Artisan komut satırı aracı (php artisan migrate).

🔧 Adım 1: Ortamı Hazırlama

Uygulamanızın kök dizininde olduğunuzdan ve Docker ortamınızın çalıştığından emin olun:

cd ~/landing-laravel
docker-compose up -d

Bu komut, Laravel, Nginx ve MySQL servislerini arka planda başlatır.


🏗️ Adım 2: Yeni Bir Migration Oluşturma

Yeni bir tablo oluşturmak için Artisan komutunu çalıştırın:

php artisan make:migration create_linkler_tablosu

Bu komut database/migrations klasöründe create_linkler_tablosu adlı bir migration dosyası oluşturur.

Dosya adınız tarih bazlı olacaktır (örneğin 2025_11_05_101200_create_linkler_tablosu.php).

Dosyayı bulmak için:

find database/migrations -name '*create_linkler_tablosu.php'

✏️ Adım 3: Tablo Sütunlarını Tanımlama

Oluşturulan migration dosyasını açın:

nano database/migrations/2025_11_05_101200_create_linkler_tablosu.php

İçeriğini aşağıdaki şekilde düzenleyin:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
Schema::create('linkler', function (Blueprint $table) {
$table->id(); // Otomatik artan ID (Primary Key)
$table->string('url', 255)->unique(); // Bağlantı adresi (benzersiz)
$table->text('aciklama'); // Bağlantı açıklaması
$table->boolean('aktif')->default(true); // Durum (true/false)
$table->timestamps(); // created_at & updated_at sütunları
});
}

public function down(): void
{
Schema::dropIfExists('linkler'); // Geri alma durumunda tabloyu sil
}
};

$table->timestamps() oluşturulma ve güncellenme zamanlarını otomatik kaydeder.


🚀 Adım 4: Migration’ı Çalıştırma

Migration dosyanızı kaydedin ve aşağıdaki komutla çalıştırın:

php artisan migrate

Bu komut, henüz çalıştırılmamış tüm migration dosyalarını sırayla uygular.

Çıktı şu şekilde görünmelidir:

Migrating: 2025_11_05_create_linkler_tablosu
Migrated: 2025_11_05_create_linkler_tablosu (120.00ms)

🔁 Adım 5: Geri Alma (Rollback) ve Sıfırlama

Migration’ı geri almak için:

php artisan migrate:rollback

Bu komut, son migration işlemini geri alır ve down() metodunu çalıştırır.

Tüm tabloları sıfırlamak isterseniz:

php artisan migrate:fresh

Bu komut tüm tabloları silip baştan oluşturur. Üretim ortamında kullanmayın!


🧹 Adım 6: Gereksiz Varsayılan Migration Dosyalarını Temizleme

Laravel kurulumuyla birlikte gelen users, password_resets, failed_jobs gibi tablolar bu proje için gereksizse silebilirsiniz.

Ancak gelecekte kullanıcı yönetimi eklemeyi planlıyorsanız bu dosyaları tutmak faydalıdır.


❓ Sıkça Sorulan Sorular (SSS)

1. Neden SQL yerine Migration kullanmalıyım?

Migration, veritabanı şemasını sürüm kontrolüne dahil eder ve ekip içinde tutarlılığı sağlar.

2. Yeni sütun eklemek için ne yapmalıyım?

Yeni bir migration oluşturun:

php artisan make:migration add_kategori_to_linkler_tablosu

3. Migration ve Seeder arasındaki fark nedir?

Migration veritabanı yapısını oluşturur; Seeder başlangıç verilerini ekler.

4. migrate:fresh komutu verileri siler mi?

Evet, tüm tabloları silip yeniden oluşturur. Geliştirme ortamında kullanın.

5. Migration dosyalarını nasıl düzenli tutarım?

Her tablo veya değişiklik için ayrı migration dosyası oluşturun; tarih sıralaması sayesinde Laravel doğru sırayla çalıştırır.


🏁 Sonuç

Laravel Migration sistemi, veritabanı yapınızı güvenli, sürümlenebilir ve yeniden oluşturulabilir hale getirir. Artisan komutlarıyla SQL yazmadan tablo oluşturabilir, güncelleyebilir ve geri alabilirsiniz.

Rabisu Bulut platformunda hemen bir Laravel ortamı oluşturup Migration işlemlerini deneyin! 🚀