- Posted on
- Comments 0
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