PHP 8 ve Laravel kullanırken Migrations (göçler), veritabanı şemasını sürüm kontrolü altında yönetmek için kullanılan bir mekanizmadır. Migrations, veritabanı tablolarını ve alanlarını oluşturmak, güncellemek veya silmek için yazılan PHP kod parçalarıdır. Bu sayede, bir ekibin farklı üyeleri arasında veritabanı değişikliklerini senkronize etmek kolaylaşır.
1. Migration Nedir?
Migration, Laravel'de veritabanı yapısını tanımlamak ve değiştirmek için kullanılan bir sınıftır. Migrations sayesinde veritabanı yapınızı kolayca oluşturabilir, güncelleyebilir ve geri alabilirsiniz. Migrations, veritabanı şemasını kod olarak tutarak, uygulamanızın geliştirilmesi sırasında veritabanı değişikliklerini takip etmeyi sağlar.
2. Migration Oluşturma
Yeni bir migration dosyası oluşturmak için terminalde aşağıdaki komutu kullanabilirsiniz:
php artisan make:migration create_posts_table
Bu komut, database/migrations
dizininde bir migration dosyası oluşturur. Dosya adı, oluşturulan tarih ve saat ile birlikte create_posts_table
şeklinde olacaktır.
3. Migration Yapısı
Migration dosyası, up
ve down
yöntemlerini içerir:
- up(): Migration çalıştırıldığında yapılacak işlemleri tanımlar (örneğin, tablo oluşturma).
- down(): Migration geri alındığında yapılacak işlemleri tanımlar (örneğin, tablo silme).
Aşağıda basit bir migration örneği bulunmaktadır:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreatePostsTable extends Migration {
public
function up(
) {
Schema::create('posts', function (Blueprint $table) {
$table->id(); // Otomatik artan ID
$table->string('title'); // Başlık
$table->text('content'); // İçerik
$table->timestamps(); // Oluşturulma ve güncellenme tarihleri
});
}
public
function down(
) {
Schema::dropIfExists('posts'); // Tabloyu sil
}
}
4. Migration Çalıştırma
Oluşturduğunuz migration'ları çalıştırmak için terminalde aşağıdaki komutu kullanabilirsiniz:
php artisan migrate
Bu komut, up
metodundaki işlemleri gerçekleştirerek veritabanında belirtilen tabloları oluşturur.
5. Migration Geri Alma
Eğer bir migration'ı geri almak isterseniz, aşağıdaki komutu kullanabilirsiniz:
php artisan migrate:rollback
Bu komut, en son çalıştırılan migration'ı geri alır ve down
metodundaki işlemleri gerçekleştirir.
6. Migration Durumunu Kontrol Etme
Geçmişte çalıştırılan migration'ların durumunu görmek için aşağıdaki komutu kullanabilirsiniz:
php artisan migrate:status
Bu komut, hangi migration'ların çalıştığını ve hangi durumlarda olduğunu gösterir.
7. Migration Değiştirme
Eğer mevcut bir migration dosyasını güncellemek istiyorsanız, ilgili migration dosyasını düzenleyebilir ve ardından tekrar migrate komutunu çalıştırabilirsiniz. Ancak, migration dosyasında değişiklik yapmadan önce, mevcut tabloları geri almanız gerekebilir.
8. Migration'da Foreign Key Kısıtlamaları
Migration dosyalarında foreign key kısıtlamaları ekleyerek, tablolar arasında ilişkiler kurabilirsiniz. Örneğin:
Schema::table('posts', function (Blueprint $table) {
$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
Bu kod, posts
tablosuna user_id
alanı ekler ve bu alanın users
tablosundaki id
alanına referans olmasını sağlar.
9. Seeders ve Migrations
Migration'lar genellikle veritabanı yapısını oluşturmak için kullanılırken, Seeders veritabanına başlangıç verileri eklemek için kullanılır. Seeders ile migration'ların birlikte çalışması, veritabanınızı daha işlevsel hale getirir.
Sonuç
Migrations, Laravel ile geliştirme yaparken veritabanı yapısını yönetmek için önemli bir araçtır. Veritabanı şemasını sürüm kontrolü altında tutmak, ekip üyeleri arasında senkronizasyonu sağlamak ve veritabanı değişikliklerini kolayca geri almak için migrations kullanmak oldukça faydalıdır. Laravel’in sunduğu migration sistemi, uygulamanızın geliştirilmesi sırasında veritabanı değişikliklerini daha düzenli ve kontrol edilebilir hale getirir.