Migration Nedir ?

Migration’lar, veritabanınız için versiyon kontrolü gibidir ve ekibinizin uygulamanın veritabanı şeması tanımını tanımlamasına ve paylaşmasına olanak tanır.

Yani migrationlar sayesinde veritabanı yönetimimiz daha kolay bir hale gelmektedir.

Migration Tanımlama

Bir migration oluşturmak için make:migration Artisan komutunu kullanabilirsiniz.

Yeni migration dosyamız, database/migrations dizininizde oluşturulacaktır..

Her migration adı, Laravel‘in migration sıralarını belirlemesine izin veren bir zaman dilimi içerir.

Örnek bir migration oluşturduğumuz artisan komutumuz şu şekildedir.

php artisan make:migration create_users_table

Laravel, tablonun adını ve migration’un yeni bir tablo oluşturup oluşturmayacağını tahmin etmeye çalışmak için migration adını kullanacaktır.

Migration’ların Yapısı

Bir migration sınıfı iki method içerir: up ve down methodları.. Up metodu, veritabanınıza yeni tablolar, sütunlar veya dizinler eklemek için kullanılırken, down metodu, up metoduyla gerçekleştirilen işlemleri tersine çevirmek için kullanılır.

Yukardaki artisan komutumuzu çalıştırdığımızda oluşan migration aşağıdaki gibidir.

<?php
 
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */public function up(){
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('surname');
            $table->timestamps();
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */public function down(){
        Schema::drop('users');
    }
}

Anonim Migration’lar

Yukarıdaki örnekte fark etmiş olabileceğiniz gibi, Laravel make:migration komutunu kullanarak oluşturduğunuz tüm migrationlara otomatik olarak bir sınıf adı atayacaktır.

Ancak dilerseniz migration dosyanızda anonim bir sınıf oluşturabilirsiniz.

Örnek anonim migration dosyası

<?php
 
use Illuminate\Database\Migrations\Migration;
 
return new class extends Migration
{
    //
};

Migration Dosyasında Veritabanı Seçme

Migration işleminiz, uygulamanızın varsayılan veritabanı bağlantısı dışında bir veritabanı bağlantısıyla etkileşimde bulunacaksa, migration işleminizin $connection özelliğini ayarlamanız gerekir:

/**
 * The database connection that should be used by the migration.
 *
 * @var string
 */
protected $connection = 'pgsql';
 
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    //
}

Yukarıda postgresql ile migrationumuzu eşleştirdik.

Migration’ları Çalıştıma

Yeni oluşturduğunuz ve daha önce migrate etmediğiniz tüm migrationları çalıştırmak için Migrate Artisan komutunu kullanırız.

php artisan migrate

Çalıştırdığımız migrationları görmek için ise şu komutu kullanırız.

php artisan migrate:status

Migration’ları Geri Alma

En son migrate ettiğimiz dosyaları geri almak için şu komutu kullanırız. Bu komut son yapılan migrate işlemlerini geri almak için kullanılır.

php artisan migrate:rollback

Sınırlı sayıda migrate işlemini geri almak için step artisan komutunu kullanırız.

php artisan migrate:rollback --step=5

migrate reset komutu tüm migrationlaarımızı geri alır.

php artisan migrate:reset

Tek Bir Satırla Migrationları sıfırlama ve geri yükleme

php artisan migrate:refresh

Belirli sayıda migration geri alma ve yenileme

php artisan migrate:refresh --step=5

Tüm tabloları Silme Ve Yeniden Migrate Etme

Migrate:fresh komutu, tüm tabloları veritabanından çıkaracak ve ardından run komutunu yürütecektir:

php artisan migrate:fresh
 
php artisan migrate:fresh --seed

Migration İle Tablo Oluşturma

Yeni bir veritabanı tablosu oluşturmak için Schema sınıfındaki create yöntemini kullanırız. Create metodu iki parametre alır. Birincisi tablo adı ikincisi ise Blueprint sınıfının içindeki değerleri alır.

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email');
    $table->timestamps();
});

Tabloyu oluştururken, tablonun sütunlarını tanımlamak için Schema builder’ın column yöntemlerinden herhangi birini kullanabilirsiniz.

Birden fazla veritabanı ile çalışıyorsak tabloyu eklemek istediğimiz veritabanını şu şekilde tanımlarız.

Schema::connection('sqlite')->create('users', function (Blueprint $table) {
    $table->id();
});

Ek olarak, tablonun oluşturulmasının diğer yönlerini tanımlamak için birkaç başka özellik ve yöntem kullanılabilir. MySQL kullanırken tablonun depolama motorunu belirtmek için engine özelliği kullanılabilir. Ve ayrıca karakter biçimini seçmek için charset metodunu kullanabiliriz.

Schema::create('users', function (Blueprint $table) {
    $table->charset = 'utf8mb4';
    $table->collation = 'utf8mb4_unicode_ci'; 
});

Migration İle Sütun Oluşturma

Schema sınıfındaki table methodu, mevcut tabloları güncellemek için kullanılabilir.

Create metodu gibi, table metodu da iki bağımsız değişkeni kabul eder: tablonun adı ve tabloya sütun eklemek için kullanabileceğiniz bir Illuminate\Database\Schema\Blueprint sınıfının metodu.

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
Schema::table('users', function (Blueprint $table) {
    $table->integer('votes');
});

Migration’larda Mevcut Kolon İsimleri

Migration’larda sütun tipi tanımlamak için birden çok metot bulunmaktadır. Tüm konon türü isimleri aşağıda listelenmiştir. Gelin bakalım.

Laravel Migration Kullanımı

Bunları kısaca şu şekilde açıklayabiliriz.

BigIncrements Kullanımı

bgIncrements metodu primary key oluştururken kullanılır. Ve auto increment özelliğini tanımlar.

$table->bigIncrements('id');

bigInteger Kullanımı

bigint türünde sütun oluşturmak için kullanırız.

$table->bigInteger('votes');

binary Kullanımı

BLOB Tipinde veri oluşturmak için binarry metodunu kullanırız.

$table->binary('photo');

boolean Kullanımı

Boolean tründe sütun oluşturmak için bollean metodunu kullanırız.

$table->boolean('confirmed');

char Kullanımı

Belli bir uzunluğa sahip karakter içeren bir sütun oluşturmak istersek char metodunu kullanırız

$table->char('name', 100);

datetime Kullanımı

Tarih ve saat eklemek istediğimiz zaman datetime metodunu kullanabiliriz.

$table->dateTime('created_at', $precision = 0);

date Kullanımı

Sadece tarih eklemek istediğimiz zaman date metodunu kullanırız.

$table->date('created_at');

decimal Kullanımı,

Decimal türünde sütun tanımlamak için decimal metodunu kullanırız.

$table->decimal('amount', $precision = 8, $scale = 2);

double Kullanımı

Double türünde veri tanımlamak için double metodunu kullanırız.

$table->double('amount', 8, 2);

 

 

Shares:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir