Laravel, veritabanınızla etkileşimi keyifli hale getiren bir nesne-ilişkisel eşleyici (ORM) olan Eloquent'i içerir. Eloquent kullanırken, her veritabanı tablosunun, o tablo ile etkileşim kurmak için kullanılan karşılık gelen bir "Modeli" vardır. Veritabanı tablosundan kayıt almanın yanı sıra, Eloquent modelleri tablodan kayıt eklemenize, güncellemenize ve silmenize de olanak tanır.
Artisan:
Model Sınıfı Oluşturma:
php artisan make:model User
Model ismi verilerken nelere dikkat edilmeli:
Model ismi oluştururken dikkat edilmesi gereken birkaç önemli nokta vardır. Bu adımlar, projenizin düzenli ve anlaşılır olmasını sağlayacak, ayrıca Laravel'in Eloquent ORM'ini etkili bir şekilde kullanmanıza yardımcı olacaktır.
1. Laravel Standartlarına Uygunluk
Laravel'in standartlarına uygun bir şekilde model ismi belirlemek önemlidir. Laravel, modellerin tekil halde ve baş harfi büyük, kelimelerin ise PascalCase (Her Kelimenin İlk Harfi Büyük) olmasını tavsiye eder. Örneğin:
User
BlogPost
ProductCategory
2. İsimlendirme Çakışmalarını Önleme
Laravel, otomatik olarak bir model oluşturduğunuzda, bu model ile ilişkilendirilen veritabanı tablosunu varsayılan olarak tahmin eder. Bu nedenle, oluşturduğunuz modelin isminin veritabanındaki tablo ile eşleşmesine dikkat etmelisiniz. Eğer modeliniz User ise, varsayılan olarak users tablosuyla eşleşecektir. Ancak, özelleştirilmiş bir tablo kullanacaksanız $table özelliğiyle bu ilişkiyi belirtmelisiniz.
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Flight extends Model { protected $table = 'my_flights'; }
3. Anlaşılır ve Tanımlayıcı İsimler
Model ismi, o modelin neyi temsil ettiğini anlatmalıdır. Projenizin konseptine göre uygun ve anlaşılır bir isim seçmek, kodunuzu okuyanlar için daha açıklayıcı olacaktır. Örneğin:
User - Kullanıcı verilerini temsil eder. Database Tablo ismi: 'users'
BlogPost - Blog yazılarını temsil eder. Database Tablo ismi: 'blog_posts'
ProductCategory - Ürün kategorilerini temsil eder. Database Tablo ismi: 'product_categories'
Model isimlerinin açıklayıcı ve anlaşılır olması, projenizin bakımını ve geliştirilmesini kolaylaştırır. Bu nedenle, model isimlerini belirlerken bu noktalara dikkat etmek önemlidir.
Migration:
Laravel Migration, Laravel'in veritabanıyla ilgili işlemleri kolaylaştıran ve veritabanı şemalarını yönetmeye olanak tanıyan bir özelliktir. Migration'lar, veritabanı tablolarını ve bu tabloların yapısını tanımlamak için kullanılır. Bu yapı, veritabanı şemasının kodlanabilir ve proje içinde paylaşılabilir olmasını sağlar.
Migration'lar, proje ekibi arasında veritabanı şemasının yönetimini kolaylaştırır. Bir geliştirici, migration dosyalarını diğer geliştiricilerle paylaşarak herkesin aynı veritabanı şemasına sahip olmasını sağlayabilir. Ayrıca, projeyi bir sunucudan başka bir sunucuya taşırken veya test ortamından canlı ortama geçiş yaparken de migration'lar çok yararlı olabilir.
Migration Oluşturma:
Migration oluşturmak için Laravel'in sağladığı komut satırı aracını kullanırız. Örneğin, bir users tablosu oluşturmak için:
php artisan make:migration create_users_table
Bu komut, database/migrations dizininde timestamp_create_users_table.php adında bir migration dosyası oluşturur.
Not: Model ile migration aynı anda oluşturmak için artisan komutu:
php artisan make:model User -m
Migration Dosyası
Oluşturulan migration dosyasında up ve down metodları bulunur. up metodu veritabanı tablosunu oluştururken, down metodu bu işlemi geri almak için kullanılır. Örneğin:
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } public function down() { Schema::dropIfExists('users'); } }
Migration Çalıştırma
Migration'ları çalıştırmak için aşağıdaki komutu kullanırız:
php artisan migrate
Bu komut, up metodunda tanımlanan tabloyu veritabanına oluşturacaktır. Ayrıca, migrations tablosuna bu migration'ın kaydedildiği bir kayıt ekler. Bu sayede, sonraki migration'ları çalıştırdığınızda Laravel daha önce çalıştırılmış migration'ları tekrar çalıştırmaz.
Migration Geri Alma
Bir migration'ı geri almak istediğinizde ise aşağıdaki komutu kullanabilirsiniz:
php artisan migrate:rollback
Bu komut, down metodunu çalıştırarak en son çalıştırılan migration'ı geri alır. Eğer birden fazla adım geri almak isterseniz, --step seçeneği ile adet belirtebilirsiniz:
php artisan migrate:rollback --step=3
Migration Yeniden Çalıştırma
Eğer bir migration'ı geri aldıktan sonra tekrar çalıştırmak isterseniz, refresh komutunu kullanabilirsiniz:
php artisan migrate:refresh
Bu komut, rollback işlemini yapar ve daha sonra migrate işlemiyle tüm migration'ları yeniden çalıştırır.
Bir tabloya yeni bir alan eklemek itediğimiz zaman sürekli rollback yaparak ekleyebileceğimiz gibi tablo verilerinde silmiş olacağız. Bunun canlı ortamda olumsuzluklar oluşturması nedeniyle yeni bir alan eklerken yeni bir migration oluşturmak ve tablo şemasını değiştirmemiz en ideal yoldur.
Tablo Şemasını Güncelleme:
Bir tablonun şemasını güncellemek için Laravel Migration'ları kullanabilirsiniz. Mevcut bir tabloya yeni bir sütun eklemek veya var olan bir sütunu değiştirmek gibi değişiklikler yapabilirsiniz. İşte bu işlemi adım adım nasıl yapacağınız:
Adım 1: Yeni Migration Oluşturma
Öncelikle yeni bir migration dosyası oluşturmanız gerekiyor. Bu dosya, tablonuzdaki değişikliği tanımlayacak.
Örneğin, posts tablosuna description adında yeni bir sütun eklemek istediğinizi varsayalım:
php artisan make:migration add_description_to_posts_table
Bu komut, database/migrations dizininde timestamp_add_description_to_posts_table.php adında bir migration dosyası oluşturacaktır.
Adım 2: Migration Dosyasını Düzenleme
Oluşturduğunuz migration dosyasını açarak tabloyu güncelleyebilirsiniz.
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class AddDescriptionToPostsTable extends Migration { public function up() { Schema::table('posts', function (Blueprint $table) { $table->string('description')->after('content')->nullable(); }); } public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn('description'); }); } }
ukarıdaki örnekte, add_description_to_posts_table migration'ı posts tablosuna description sütununu ekler. after('content') ile content sütunundan sonra eklenmesini sağlıyoruz ve nullable ile bu sütunun boş olabileceğini belirtiyoruz.
Not: Burada şuna dikkat etmek gerek eğer 'php artisan make:migration add_...' add ile başlarsanız oluşan migrate şemayi değiştirmeye yönelik bir kod üretecektir. create ile başlarsanız yeni bir tablo oluşturmaya yönelik kod oluşur.
0 Yorum
Önerilen Yorumlar
Görüntülenecek yorum yok.