Projelerimizi test etme aşamasında veya sunum aşamasında proje içeriğinin dolu olması sitenin daha iyi anlaşılabilmesini sağlar. Css deki kayma, taşma hatalarını görme kolaylığı sağlayabilir. Bunun için veritabanına örnek kayıtlar eklemek gerekebilir.
Laravel örnek kayıtların eklenmesi için seed sınıflarını sunar.
Öncelikle seed sınıfı için tablomuzu ve modelimiz olması gerekir. Örnek olarak tablo adım: Posts sütunlar ise resimdeki gibidir. Post adıyla da bir modelim mevcuttur.
Seeder oluştururken genel olarak kullanılan belirli bir isimlendirme mevcuttur. tabloAdiTableSeeder Örnek: PostsTableSeeder
Yeni bir seeder oluşturmak için;
php artisan make:seeder PostsTableSeeder
Oluşan her seeder,
Database/seederklasöründe bulunmaktadır. Oluşturduğumuz seeder’ın run metodu içerisine veritabanına eklemek istediğimiz girdileri yazıyoruz. Laravel ORM ile create fonksiyonunu oluşturalım.
Kodumuzu çalıştırmadan önce, laravelin varsayılan kurulumu ile gelen DatabaseSeeder sınıfına oluşturduğumuz seeder’ı eklememiz gerekir. DatabaseSeeder sınıfı oluşturduğumuz seeder sınıfı ile aynı dizindedir.
use App\Post;
use Illuminate\Database\Seeder;
class PostsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Post::create([
'title' => str_random(10),
'content' => str_random(30),
'tag' => str_random(5) . ',' . str_random(5),
'status' => 1
]);
}
}
Oluşturduğumuz seeder sınıflarını call() metoduyla çağırıyoruz.
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// $this->call(UsersTableSeeder::class);
$this->call(PostsTableSeeder::class);
}
}
php artisan db:seedkomutuyla DatabaseSeeder sınıfını çağırıyoruz. Bu sınıfın run fonksiyonu ile çağırdığımız tüm seederlar çalışacaktır.
Eğer sadece istediğimiz bir sınıfımızı çalıştırmak istersek;
php artisan db:seed --class=PostsTableSeeder
Class PostsTableSeeder does not exist
Hatası alırsanız composer dump-autoload komutunu çalıştırmayı unutmayınız.
Seeder’ımız çalıştığında kaydımız eklendi. Ancak rastgele oluşturulan harflerden oluştuğu için sitemizde çok sağlıklı durmayacaktır. Bunun için rastgele karakterlerden oluşturmak yerine rastgele kelimeler ile oluşturan fzaninotto/Faker eklentisini kullanacağınız. Projemizde standart olarak yüklü olarak geliyor. Projenizde yüklü değilse eklentinin github sayfası, sayfa sonunda mevcuttur.
use App\Post;
use Illuminate\Database\Seeder;
class PostsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$faker = Faker\Factory::create();
for($i=0; $i<10; $i++) {
Post::create([
'title' => $faker-> sentence(3),
'content' => $faker->paragraph(5),
'tag' => join(',', $faker->words(5)),
'status' => $faker->randomElement($array = array('0','1'))
]);
}
}
}
php artisan db:seedkomutunu tekrar çalıştırdığımızda

Kayıtlarımızın eklendiğini görüyoruz. Rastgele kelimeler ve daha kapsamlı bir kullanım olduğu için daha hoş bir görüntü ve daha sağlıklı olacaktır. Veritabanında ad soyad, ülke, şehir, renk kayıtlarını tutuyorsanız bu eklentinin Türkçesi de mevcut ve bu sütunları Türkçe olarak getirebilirsiniz. Türkçe kullanmak için,
$faker = Faker\Factory::create('tr_TR');
for($i=0; $i<10; $i++) {
Post::create([
'title' => $faker->name,
'content' => $faker->paragraph(5),
'tag' => join(',', $faker->words(5)),
'status' => $faker->randomElement($array = array('0','1'))
]);
}

Ancak oluşturulan cümleler, kelimeler yine varsayılan ayarlar ile gelmektedir.
Bu eklenti için daha birçok format mevcuttur. Tarih, saat, şifre, random sayı, adres, cinsiyet, eposta, telefon, , file, bool, regex, useragent gibi formatlarını mevcuttur. Daha detaylı bilgi için eklentinin github sayfası; https://github.com/fzaninotto/Faker