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…
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.
| 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.
| string | $name | Oluşturulacak migrasyonun adı. |
| int | $version = 0 | Versiyon numarası. Hiç bir değer belirtilmez ise versiyon 000 olarak kabul edilir. |
| return | bool | |
Migration::create('Blog');
Şimdi versiyonunu oluşturalım.
Migration::create('Blog', 1);
Migration::create('Blog', 2);
php buyruk library:run migration:create Blog 3
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.
| void | ||
| return | mixed | |
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.
| 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. |
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.
MigrateBlog::up() # Create Table
MigrateBlog::down() # Drop Table
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.
| string | ...$migrateNames | Migrate edilecek dosyaların adı. |
| return | bool | |
Migration::upAll('Blogs', 'Users', 'Profiles');
Migration::downAll('Blogs', 'Users', 'Profiles');
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.
| int | $version | Versiyon numarası. |
| return | this | |
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.
| string | $name | Silinecek migrasyonun adı. |
| int | $version = 0 | Silinecek migrasyonun versiyonu. |
| return | bool | |
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
php buyruk library:run migration:delete blog 1
php buyruk library:run migration:deleteall
php buyruk migration:delete Blog
php buyruk migration:delete --all