KKUT Docs

Migrations / Göçler

Bu bölümde göçlerin (migration) nasıl oluşturulup kullanılacağına yer vermeye çalıştık. Göçler genellikle DBForge:: sınıfının yaptığı tablo oluşturma, sütun ekleme gibi işlemleri yapar ancak…

This article is currently available in Turkish. Its English translation is being prepared.

Bu bölümde göçlerin (migration) nasıl oluşturulup kullanılacağına yer vermeye çalıştık. Göçler genellikle DBForge:: sınıfının yaptığı tablo oluşturma, sütun ekleme gibi işlemleri yapar ancak tek farkı kodlar bir dosyada saklanır. Göç dosyaları up ve down olmak üzere iki fonksiyon içerir. Bunlardan up oluşturma işlemi down ise yapılan işlemi geri almak için kullanılır. Tabi burada bu işlemler yapılırken dosyalar versiyonlanarak oluşturulur ki hangi işlemin önce yapıldığı anlaşılır. Böylece projeniz taşındığında veritabanı dosyasını doğrudan taşımak yerine versiyonlanarak tutulan dosyalar ile yeniden tüm veritabanının inşaası sağlanır. Şimdi bu sınıfın kullanımı ile ilgili örneklere geçelim.

Yapılandırma

Mİgrasyon verilerini tutacak tablo adını ayarlamak için aşağıda yolu belirtilen yapılandırma dosyasından migrationTable değerini değiştirebilirsiniz. Varsayılan olarak migrations ayarlıdır.

File: Config/Database.php
Migration
string $table = 'migrations' Migration işlemleri ile gerçekleştirilen tablo oluşturma ve geri alma işlemlerin hangi tabloya kayıt edileceğini belirtir.

Yöntemler

Migration
string create($name, int $ver = [[0]])
bool delete(string $name, int $ver = [[0]])
bool deleteAll(void)
this version(int $version = [[0]])
bool upAll(string ...$migrateNames)
bool downAll(string ...$migrateNames)
Migrate
bool up(void)
bool down(void)

Create

Bu yöntem ile Models/Migrations/ dizini için migrasyon oluşturmak için kullanılır. Yöntemi çalıştırdıktan sonra bu dizini kontrol ettiğinizde dosyanın oluşturulğunu görebilirsiniz. Dosya önceden tanımlı bir kaç komutla birlikte oluşturulur. Siz sadece up() ve down() fonksiyonlarının içerisini dolduruyorsunuz.

Parametreler
string $name Oluşturulacak migrasyonun adı.
int $version = 0 Versiyon numarası. Hiç bir değer belirtilmez ise versiyon 000 olarak kabul edilir.
return bool
Kullanımı
File: Controllers/MigrationExample.php
Migration::create('Blog');

Şimdi versiyonunu oluşturalım.

File: Controllers/MigrationExample.php
Migration::create('Blog', 1); 
Created File: Models/Migrations/BlogVersion/001.php
Migration::create('Blog', 2);
Created File: Models/Migrations/BlogVersion/002.php
Konsol Kullanımı
php buyruk library:run migration:create Blog 3
Created File: Projects/ProjectDirectory/Models/Migrations/BlogVersion/003.php
php buyruk migration:create Blog

Up / Down KUT 1.0’da desteklenir

Oluşturulan migration dosyalarını kullanmak için dosyanızın başına Migrate ön eki getirmeniz gerekiyor. Örneğin Models/Migrations/Blog.php dosyamızın olduğunu kabul edersek bu sınıfı kullanmak için MigrateBlog::up / Migrate::down() şeklinde kullanmalısınız. Böylece Blog adında bir tablo oluşturmak için MigrateBlog::up() yapmanız yeterlidir. Ancak burada up fonksiyonun içerisini sizin doldurmanız gerekmektedir. Ön tanımlı olarak up() fonksiyonu için dropTable() yöntemi tanımlıdır. Siz isterseniz bu komutu değiştirebilirsiniz. Aşağıdaki örnekte migrasyon dosyasının nasıl kullanılacağı ve içeriği hakkında bilgi verilmiştir.

Parametreler
void
return mixed
Kullanımı
Created File: Models/Migrations/Blog.php
class FacadeMigrateBlogs extends Migration
{
	#---------------------------------------------------------------------------
	# Class/Table Name
	#---------------------------------------------------------------------------
	const table = __CLASS__;

	#---------------------------------------------------------------------------
	# Up 
	#---------------------------------------------------------------------------
	public function up()
	{
		# Queries
	}

	#---------------------------------------------------------------------------
	# Down
	#---------------------------------------------------------------------------
	public function down()
	{
		$this->dropTable();
	}
}

Yukarıdaki içerikte up ve down fonksiyonlarının içeriği sizin yapmayı planladığınız Database işlemlerine göre şekillenecektir. Up() fonksiyonu içerisinde ne gibi işlemler yapabileceğiniz aşağıdaki tabloda verilmiştir.

Migrate Up/Down Yöntemleri
Up 
createTable() DBForge::createTable() kullanımı gibidir.
addColumn() DBForge::addColumn() kullanımı gibidir.
modifyColumn() DBForge::modifyColumn() kullanımı gibidir.
Down
dropTable() DBForge::dropTable() kullanımı gibidir.
dropColumn() DBForge::dropColumn() kullanımı gibidir.
truncate() DBForge::truncate() kullanımı gibidir.
Edited File: Models/Migrations/Blog.php
public function up()
{
    $this->createTable
    ([
        'id' => [DB::int(11), DB::autoIncrement(), DB::primaryKey()]
    ]);
}

public function down()
{
    $this->dropTable();
}

Yukarıda belirtilen dosyayı kaydedildikten sonra herhangi bir kontrolcü içerisinde kullanılabilir. Yada konsol komutu ile çalıştırılabilir.

File: Controllers/MigrateExample.php
MigrateBlog::up()   # Create Table
MigrateBlog::down() # Drop Table
Konsol Kullanımı
php buyruk library:run migrateblog:up
php buyruk library:run migrateblog:down
php buyruk migration:up Blog
php buyruk migration:down Blog

# UpAll / DownAll

Aynı anda birden fazla migration dosyasını çalıştırmak için kullanılır.

Parametreler
string ...$migrateNames Migrate edilecek dosyaların adı.
return bool
Kullanımlar
Migration::upAll('Blogs', 'Users', 'Profiles');
Migration::downAll('Blogs', 'Users', 'Profiles');
Konsol Kullanımı
​​​​​​​php buyruk multimigration:up Blogs Users Profiles
php buyruk multimigration:down Blogs Users Profiles

Version

Göçlerin versiyonunu ya da oluşturulan göç dosyalarından hangi versiyonun kullanılacağını belirtmek için kullanılır.

Parametreler
int $version Versiyon numarası.
return this
Kullanımı
File: Projects/ProjectDirectory/Controller/MigrateExample.php
MigrateBlog001:up();             # Create Table Version 1
MigrateBlog001:down();           # Drop Table Version 1
MigrateBlog::version(1)->up();   # Create Table Version 1
MigrateBlog::version(1)->down(); # Drop Table Version 1

Delete / DeleteAll

Oluşturulan göçleri silmek için kullanılır.

Parametreler
string $name Silinecek migrasyonun adı.
int $version = 0 Silinecek migrasyonun versiyonu.
return bool
Kullanımı
File: Projects/ProjectDirectory/Controllers/MigrationExample.php
Migration::delete('Blog'); // Deleted Blog File
Migration::delete('Blog', 1); // Deleted Blog 001 File
Migration::delete('Blog', 2); // Deleted Blog 002 File
Migration::deleteAll(); // Deleted All File
Konsol Kullanımı
php buyruk library:run migration:delete blog 1
php buyruk library:run migration:deleteall
​​​​​​​php buyruk migration:delete Blog
php buyruk migration:delete --all
KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.