- 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