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