
Laravel 9 CRUD Uygulaması
Laravel 9 CRUD uygulaması kodlayalım.
Merhaba arkadaşlar bu yazıda sizlerle birlikte test verileri oluştururken laravel factory faker kullanarak hızlı bir şekilde ve istediğimiz kadar test verisi nasıl oluşturabilirsiniz bundan bahsedeceğim.Adım adım uyguladığınızda konuyu anlayacak ve kendiniz istediğiniz şekilde uygulayabileceksiniz.O halde hemen başlayalım. :)
İlk olarak boş bir proje oluşturuyoruz ve projeyi kod editörümüzde açıp .env dosyasından veritabanı bağlantı bilgilerimize göre boş bir veritabanı oluşturuyoruz.
laravel new factory-example
Aşağıdaki komutları terminal ekranında çalıştırıyoruz.
php artisan make:model Comment
php artisan make:migration create_comments_table
php artisan make:factory CommentFactory burada dikkat etmemiz gereken şey Comment model adımız Factory ise test dosyasının adıdır.Örneğin php artisan make:factory CategoryFactory şeklinde yapabilirsiniz.
Eğer laravel factory nedir diye merak ediyorsanız terminal ekranınızdan aşağıdaki komutları girerek ve işlem sonucunda users tablosuna gözattığınızda 20 satır veri oluştuğunu göreceksiniz :) aslında burada yaptığımız şey de bu fakat kendi istediğimiz şekilde özelleştiriyoruz.
php artisan migrate
php artisan tinker
User::factory()->count(20)->create()
Uygulamamıza dönecek olursak Comment modelimiz içerisindeki ayarları yapılandırmamız gerekiyor.İlk olarak
use HasFactory; kısmına dikkat çekmek istiyorum.Burayı silersek factory çalışmaz.
Aşağıdaki gibi modelimizin ayarlarını yapıyoruz.
database/factories/CommentFactory.php dosyasını açıp ilk olarak modelimizi çağırmamız gerekiyor.Daha sonra definition kısmının return array içerisini aşağıdaki gibi test verisi oluşturabilecek özelliği ekliyoruz.Örnekte gördüğünüz gibi content alanı içerisinde $this->faker kullanarak oluşturacağımız alan ve özelliği belirtiyoruz.text() ile oluşturmak istediğimiz veri türünü belirtiyoruz.text(500) 500 rakamı yazının karakter uzunluğunu belirtiyoruz.Buraya isterseniz 200-300 de yazabiliriz.Uzunluğu size bağlı.
App/Models/Comment.phpclass Comment extends Model
{
use HasFactory; //--burada factory kullanabileceğimizi belirtiyoruz
protected $table = 'comments'; //--burası bağlanacağımız tabloyu temsil ediyor
protected $fillable = ['content']; //--burası veritabanındaki alanlarımıza erişim iznini temsil ediyor
}
Daha sonra migration yani tablomuzu düzenlememiz gerekiyor. database/migrations/ içerisindeki comments tablomuzu açıp aşağıdaki gibi content alanını ekliyoruz.
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->text('content'); //--burada sadece tek bir alan üzerinden işlem yapacağız.
$table->timestamps();
});
Ve artık oluşturmuş olduğumuz tabloyu veritabanına ekliyoruz.
Terminal ekranımızı açıp aşağıdaki komutları uyguluyoruz.
php artisan migrate:fresh
veya
php artisan migrate:fres //--bu şekilde de kullanabilirsiniz
composer dump-autoload //--yapmış olduğumuz değişiklikleri mixlemiş oluyoruz.Aksi durumda factory çalışmaz, eğer migration da bir değişiklik yapmışsanız bu komutu tinker çalıştırmadan önce çalıştırmalısınız.
php artisan tinker
Comment::factory()->count(10)->create(); //--Modelimizin adını, count() ile sayısını ve create() ile oluşturmasını istiyoruz.10 sayısı örnektir siz istediğiniz sayıyı belirtebilirsiniz.
Sonuç olarak veritabanına elimizi bir sürmeden, tek tek seeder oluşturmadan çok kısa bir şekilde test verileri oluşturmuş olduk.Örnekteki gibi;

Diğer özelliklere bakarak, bu kısımdan dilediğiniz şekilde oluşturabilirsiniz.
public function definition()
{
return [
'paragraph' => $this->faker->paragraph(),
'title' => $this->faker->title(),
'user_id' => $this->faker->numberBetween(1,3),
'content' => $this->faker->text(500),
'check_in' => $this->faker->dateTimeBetween('-10 days','now'),
'check_out' => $this->faker->dateTimeBetween('now','+ 10 days'),
'meta' => [
'settings' => [
'site_background' => 'white',
'site_language' => 'tr',
],
'skills' => $this->faker->randomElements(['laravel','php','css','html','js'], mt_rand(1,6)),
'gender' => $this->faker->randomElements(['male','female','other'])
]
];
}
Free Laravel Tutorial
You can access Practical Laravel 9 Training Videos through the website.
Go to Course