Laravel Migrations: Veritabanı Tablolarını Oluşturma ve Yönetme 🏗️
Meta Açıklama:
Laravel Migrations kullanarak SQL yazmadan veritabanı tablolarını nasıl oluşturacağınızı, güncelleyeceğinizi ve versiyonlayacağınızı öğrenin.
Bu rehberde ne öğreneceksiniz?
Laravel Migrations (Göçler) özelliğini kullanarak uygulamanızın veritabanı şemasını (schema) komut satırı üzerinden nasıl yöneteceğinizi öğreneceksiniz. Artisan aracıyla bir tablo oluşturmayı ve bu tabloya özel sütunlar eklemeyi adım adım uygulayacağız. Bu sayede veritabanınızı bir versiyon kontrol sistemi gibi yönetebileceksiniz.
🧠 Aşama 1 – İçeriği Analiz Et (Anlama)
Ana Teknik Konu:
Laravel çerçevesinde Migrations (Veritabanı Göçleri) kullanarak veritabanı tablolarını programatik olarak oluşturma ve yönetme.
Hangi Problemi Çözüyor?
Geliştiricilerin SQL sorguları yazma veya veritabanı konsoluna giriş yapma ihtiyacını ortadan kaldırarak, veritabanı şemasını kolayca oluşturmasını, yok etmesini ve yeniden yaratmasını sağlamak. Bu, ekipler arası işbirliğini ve sürekli entegrasyonu kolaylaştırır.
Kullanıcı Hangi Adımları İzliyor?
- Proje kök dizinine gitme ve Docker ortamını başlatma.
php artisan make:migrationkomutu ile yeni bir göç dosyası oluşturma.- Oluşturulan göç dosyasını açıp
up()metoduna tabloya eklenecek sütunları (url, description, enabled) tanımlama. down()metodunun tabloyu silmesini (Schema::dropIfExists) kontrol etme.php artisan migratekomutu ile göçleri çalıştırma.
Teknik Özet:
Bu rehber, Laravel uygulamasında links tablosunu oluşturmak için bir Migration yazmayı amaçlar. Adımlar: Artisan ile create_links_table göç dosyasını oluşturmak, bu dosyada up() metodu içine string('url'), text('description'), boolean('enabled') sütunlarını eklemek ve son olarak php artisan migrate ile tabloyu veritabanında aktif etmektir.
Aşama 2 – Türkçeye Teknik Olarak Doğru ve Yerelleştirilmiş Çeviri Yap
1. Hazırlık ve Yeni Göç Dosyası Oluşturma
İlk olarak, geliştirme ortamınızın çalıştığından emin olun. Ardından Laravel'in Artisan komut satırı aracıyla yeni bir göç (migration) dosyası oluşturalım.
Docker Ortamını Başlatma
Uygulamanın kök dizininde olduğunuzu kontrol edin ve Docker Compose ortamını çalıştırın:
cd ~/rabisu-laravel-app
docker-compose up -d
Bu komut, uygulamanızın geliştirme ortamını arka planda ayağa kaldırır.
Migration Dosyasını Oluşturma
Veritabanımızdaki bağlantıları saklayacağımız links tablosu için bir göç dosyası oluşturalım:
docker-compose exec app php artisan make:migration create_links_table
Bu komut, database/migrations klasöründe zaman damgalı yeni bir PHP sınıfı oluşturur. Yeni dosyanın tam adını (örneğin 2025_10_21_120000_create_links_table.php) komut çıktısından kontrol edin.
2. Tablo Sütunlarını Tanımlama
Oluşturulan göç dosyası iki ana metot içerir:
up(): Göçü çalıştırdığınızda (tabloyu oluştururken) çalışır.
down(): Göçü geri aldığınızda (tabloyu silerken) çalışır.
Dosyayı metin düzenleyicinizle açın. (Örnek dosya adınız farklı olacaktır.)
nano database/migrations/2025_10_21_120000_create_links_table.php
up() Metodunu Güncelleme
Schema::create('links', ...) yapısının içine, ihtiyacımız olan sütunları ekleyelim. Varsayılan olarak gelen id() ve timestamps() metotlarını koruyun.
Aşağıdaki kod, create_links_table.php dosyanızın yeni içeriğidir:
// database/migrations/2025_10_21_120000_create_links_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateLinksTable extends Migration
{
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->id(); // Otomatik artan birincil anahtar
$table->string('url', 200); // 200 karakterlik bağlantı URL'si
$table->text('description'); // Uzun metin alanı (açıklama)
$table->boolean('enabled')->default(true); // Durum bilgisi, varsayılanı true
$table->timestamps(); // create_at ve updated_at sütunları
});
}
public function down()
{
Schema::dropIfExists('links'); // Tabloyu siler
}
}
Bu kod, links tablosuna URL, açıklama ve etkinlik durumu sütunlarını ekler.
Dosyayı kaydedip kapatın.
3. Göçleri Çalıştırma ve Doğrulama
Sütunları tanımladığımıza göre, göçleri çalıştırarak Artisan'ın bu tabloyu veritabanınızda oluşturmasını sağlayalım.
Migration'ı Çalıştırma
Migration’ı çalıştırmak için şu komutu kullanın:
docker-compose exec app php artisan migrate
Bu komut, links tablosu dahil olmak üzere, veritabanında henüz oluşturulmamış tüm tabloları oluşturur.
Çıktıda, Migrating: ...create_links_table satırını görmelisiniz. Bu, tablonuzun başarıyla oluşturulduğu anlamına gelir.
Göçleri Geri Alma (Rollback)
Eğer bir hata yaparsanız veya tablonun yapısını değiştirmek isterseniz, son göç işlemini geri alabilirsiniz:
docker-compose exec app php artisan migrate:rollback
Bu komut, son çalıştırılan göçleri geri alır ve links tablosunu siler.
Sıkça Sorulan Sorular (SSS)
- Migration kullanmanın temel avantajı nedir?
En büyük avantajı, veritabanı şemasını versiyonlamaktır. Ekip üyeleri aynı göç dosyaları üzerinden çalıştığı için herkesin veritabanı yapısının aynı olmasını garanti eder. Ayrıca SQL yazma ihtiyacını ortadan kaldırır.
Schema::createileSchema::tablearasındaki fark nedir?
Schema::create('tablo_adi', ...): Yeni bir tablo oluşturur.
Schema::table('tablo_adi', ...): Mevcut bir tabloya yeni sütun ekler veya mevcut sütunları değiştirir.
- Veritabanına elle tablo eklesem ne olur?
Artisan migrate komutu, sadece migrations tablosunda kaydı olmayan göç dosyalarını çalıştırır. Elle eklenen tablolar bu sisteme dahil olmaz. Bu, şema tutarsızlığına yol açabilir. Bu yüzden tüm tablo işlemlerini Migration ile yapmanız önerilir.
- Neden dosya adının başında tarih var?
Göç dosyalarının başında yer alan zaman damgası, Laravel'in göçleri hangi sırayla çalıştıracağını belirler. Bu, tablolar arası bağımlılıkları yönetmek için kritik öneme sahiptir. En eski tarihli dosya ilk çalışır.
timestamps()metodu hangi sütunları oluşturur?
Bu yardımcı metot, her veritabanı kaydında otomatik olarak güncellenen ve oluşturulan iki sütun ekler:
created_at
updated_at
Sonuç
Laravel Migrations ile veritabanı tablonuzu başarıyla yönettiniz. Artık veritabanı şemanızı daha kolay bir şekilde güncelleyebilir ve yönetebilirsiniz. Uygulamanızın sonraki aşamalarını Rabisu Bulut platformunda hızlıca inşa etmeye devam edebilirsiniz.