Laravel 4 Migration Seed Faker Database

Merhaba Arkadaşlar ,

Bu yazımda Laravel 4  de proje şablonu oluşturuken kullanabileceğimiz , Migration , Seed ve Faker araçlarını birarada kullanarak yeni bir projenin temellerini oluşturacağım.

Henüz Laravel 4 kurulumunu yapmadıysanız. Hızlı kurulumu için bu yazıyı okuyun.

Laravel 4 ile ilgili basit ipuçları ve Faker hakkında ayrıntılı bilgi için bu yazıyı okuyabilirsiniz.

Migration

Migration aracının bize sağlıdığı en iyi özellik şema tasarımının kolayca oluşturulabilmesi , ORM yapasına uygun kolonları eklemesi timestamp( ‘created_at’ , ‘updated_at’) verileri ve proje içinde çalışırken artık bizi database’e bakma yükünden kurtarması. Migration dosyaları ‘app/database/migrations’ klasörü altında bulunuyor.

  • <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    
    class CreateProduct extends Migration {
    
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up() {
            Schema::create('product', function(Blueprint $table) {
                $table->increments('pid');
                $table->string('title');
                $table->text('description');
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down() {
            Schema::drop('product');
        }
    
    }

    MySQL deki bütün veri tiplerini ve özelliklerini şema oluştururken kullanmak mümkün integer , bigint , text ,enum vs.. Ayrıntılı bilgi için buraya bakabilirsiniz.

  • php artisan migrate

    Yukarıdaki komut ile migrations klasörü altındaki dosyaları okuyrak database de tablolar ve alanları oluşturduk.

Seed ve Faker

Migration ile şemamızı oluşturduk ve database hazır ama boş 😀 Bize gerçek olmayan veriler(Dummy Data) lazım. Seed Class’ı bu konuda yardımımıza koşuyor. Buna ek olarak rastgele ve anlamlı yazı , resim , websitesi , email vs. ihtiyazcınız olabiliecek birçok veri tipini de ‘Faker’ ile üretebilirsiniz.

Faker kurulumu , desteklediği veriler için buraya bakınız.

  • Kullanım kolayladığı sağladığı için ben öncelikle modelin oluşturulması gerektiğini düşünüyorum. İsterseniz model olmadan da insert methodu ile database’i doldurabilirsiniz.
  • <?php
    
    /**
     * An Eloquent Model: 'Products'
     *
     * @property integer $pid
     * @property string $title
     * @property string $description
     * @property \Carbon\Carbon $created_at
     * @property \Carbon\Carbon $updated_at
     */
    class Product extends \Eloquent {
        protected $table = 'product';
        protected $fillable = [];
    }

    Yukarıdaki kodları ‘app/models’ altına Product ismi ile kaydedebilirsiniz.

  • <?php
    
    // Composer: "fzaninotto/faker": "v1.3.0"
    use Faker\Factory as Faker;
    
    class CompanyTableSeeder extends Seeder {
    
        public function run()
        {
            $faker = Faker::create();
            foreach(range(1, 100) as $index)
            {
                Product::create([  
                    'title' => $faker->title,
                    'description' => $faker->text(400),
                ]);
            }
    
            $this->command->info('Products table seeded!');
        }
    
    }

    Seeder dan 100 tane rastgele anlamlı veriyi database’e eklemesini istedik.

  • <?php
    
    class DatabaseSeeder extends Seeder {
    
    	/**
    	 * Run the database seeds.
    	 *
    	 * @return void
    	 */
    	public function run()
    	{
                 Eloquent::unguard();
                 $this->call('ProductTableSeeder');
    
    	}
    
    }

    ‘app/database//seeds/DatabaseSeeder.php’ yukarıdaki kodlara $this->call methodu ile yeni oluşturduğumuz seeder çağırdık.

  • php artisan db:seed

    Evettt tamamdır. Tam 100 tane anlamlı verimiz oldu. Bu şekilde projenize stres testi yapabilir ve optimizasyon sorunlarını çözebilirsiniz. Artık boş ve anlamsız verilerle web projesi oluşturmaya son!! 😀

Bir dahaki Laravel yazımızda görüşmek dileğiyle..

Muharrem Tığdemir

Leave a Reply