Php 8 Models

Php 8 Models

PHP 8 ile Laravel kullanırken Models (modeller), veritabanı tablolarını temsil eden ve bu tablolara erişimi yönetmek için kullanılan sınıflardır. Modeller, veritabanındaki verileri nesne yönelimli bir şekilde yönetmeye olanak tanır ve genellikle uygulamanızın iş mantığıyla veritabanı etkileşimini soyutlar.

1. Model Nedir?

Model, veritabanındaki bir tabloya karşılık gelen bir sınıftır. Her model, genellikle bir tablo ile ilişkilidir ve bu tabloya ait verileri almak, güncellemek, silmek veya oluşturmak için yöntemler sağlar. Laravel, Eloquent ORM (Object-Relational Mapping) kullanarak modeller ile veritabanı arasındaki etkileşimi kolaylaştırır.

2. Model Oluşturma

Yeni bir model oluşturmak için terminalde aşağıdaki komutu kullanabilirsiniz:

php artisan make:model Post

Bu komut, app/Models dizininde Post.php adında bir model dosyası oluşturur.

3. Model Yapısı

Oluşturulan model dosyası genellikle şu şekilde görünür:

<?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Post extends Model { use HasFactory; // Fabrika kullanımını etkinleştirir protected $fillable = ['title', 'content']; // Kütüphane ile doldurulabilecek alanlar }

4. Model Özellikleri

  • $fillable: Bu dizi, toplu atama (mass assignment) için hangi alanların kullanılabileceğini belirtir. Örneğin, bir formdan alınan verilerin hangi alanlara doldurulabileceğini kontrol edebilirsiniz.

  • ** g u a r d e d : B u d i z i , h a n g i a l a n l a r ı n t o p l u a t a m a y a k a p a t ı l a c a g ˘ ı n ı b e l i r t i r . guarded**: Bu dizi, hangi alanların toplu atamaya kapatılacağını belirtir. ` fillable` ile birlikte kullanılır, ancak yalnızca birini kullanmak genellikle yeterlidir.

  • ** t a b l e : E g ˘ e r m o d e l i n i z i n t a b l o s u v a r s a y ı l a n a d l a n d ı r m a k u r a l ı n a u y m u y o r s a , table**: Eğer modelinizin tablosu varsayılan adlandırma kuralına uymuyorsa, ` table` özelliği ile tablo adını belirtebilirsiniz.

protected $table = 'my_custom_table_name';
  • $primaryKey: Varsayılan olarak id olan birincil anahtarınız farklı bir ad ise, bunu belirtmek için bu özelliği kullanabilirsiniz.
protected $primaryKey = 'post_id';

5. Temel Eloquent İşlemleri

Eloquent, modeller aracılığıyla veritabanı ile etkileşimi kolaylaştırır. Aşağıda bazı temel Eloquent işlemleri bulunmaktadır:

5.1. Veri Alma

$posts = Post::all(); // Tüm kayıtları al $post = Post::find(1); // ID'si 1 olan kaydı al

5.2. Yeni Kayıt Oluşturma

$post = new Post(); $post->title = 'Yeni Başlık'; $post->content = 'Yeni içerik'; $post->save(); // Kaydı veritabanına kaydet

Ya da toplu atama ile:

Post::create([ 'title' => 'Yeni Başlık', 'content' => 'Yeni içerik' ]);

5.3. Kayıt Güncelleme

$post = Post::find(1); $post->title = 'Güncellenmiş Başlık'; $post->save(); // Kaydı güncelle

5.4. Kayıt Silme

$post = Post::find(1); $post->delete(); // Kaydı sil

6. İlişkiler

Laravel, modeller arasında ilişkileri tanımlamanıza olanak tanır. Örneğin, bir User modelinin birçok Post modeline sahip olduğunu düşünelim:

class User extends Model { public function posts( ) { return $this->hasMany(Post::class); } } class Post extends Model { public function user( ) { return $this->belongsTo(User::class); } }

Bu ilişkileri kullanarak ilgili verileri alabilirsiniz:

$user = User::find(1); $posts = $user->posts; // Kullanıcının tüm gönderilerini al $post = Post::find(1); $user = $post->user; // Gönderinin yazarını al

7. Scope'lar

Eloquent'ta query scope'lar, belirli bir sorgu mantığını tekrar kullanmak için tanımlayabileceğiniz özel yöntemlerdir.

class Post extends Model { public function scopePublished( $query ) { return $query->where('published', true); } } // Kullanımı $publishedPosts = Post::published()->get();

8. Eloquent Fabrikaları

Eloquent fabrikaları, test veya geliştirme sırasında model örnekleri oluşturmak için kullanılır. Fabrikalar, belirli bir modelin rasgele verilerle doldurulmuş örneklerini oluşturmanıza olanak tanır.

php artisan make:factory PostFactory --model=Post

Daha sonra database/factories/PostFactory.php dosyasını düzenleyerek modelin nasıl örnekleneceğini tanımlayabilirsiniz.

Sonuç

Modeller, Laravel ile web uygulamaları geliştirirken veritabanı etkileşimini yönetmek için önemli bir bileşendir. Eloquent ORM ile modeller arasında kolay ve anlaşılır bir iletişim kurabilirsiniz. Modellerin sunduğu ilişkiler, sorgu kapsamları ve fabrikalar gibi özellikler, uygulamanızı daha esnek ve modüler hale getirir. Laravel’in güçlü model yapısı sayesinde veritabanı işlemlerinizi daha etkin bir şekilde yönetebilirsiniz.



Yorum Ekle

Üzerine gel