Eloquent İlişkileri
hasOne, hasMany, belongsTo ve çoktan çoğa ilişkileri tanımlayın.
Eloquent İlişkileri, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
İlişkiler Neden Kullanılır?
Eloquent ilişkileri, ham SQL JOIN'leri yerine açıklayıcı PHP kullanarak ilişkili modelleri sorgulamanızı sağlar.
hasOne
Bir User'ın bir Profile'ı vardır. Tanımı sahibi olan modelde yapın.
<?php
class User extends Model {
public function profile(): \Illuminate\Database\Eloquent\Relations\HasOne {
return $this->hasOne(Profile::class);
}
}
// Access:
$profile = $user->profile;belongsTo
Bir Profile, bir User'a aittir. Tanımı yabancı anahtarı barındıran modelde yapın.
<?php
class Profile extends Model {
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
return $this->belongsTo(User::class);
}
}
// Access:
$user = $profile->user;hasMany
Bir User'ın birçok Post'u vardır. Üst model tarafından tanımlanan bire çok ilişkisidir.
<?php
class User extends Model {
public function posts(): \Illuminate\Database\Eloquent\Relations\HasMany {
return $this->hasMany(Post::class);
}
}
// Access:
$posts = $user->posts; // CollectionbelongsTo (çok tarafı)
Her Post bir User'a aittir.
<?php
class Post extends Model {
public function author(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
return $this->belongsTo(User::class, "user_id");
}
}Çoka Çok (belongsToMany)
Bir Post'un birçok Tag'i, bir Tag'in de birçok Post'u vardır — bunlar bir ara tablosu üzerinden bağlanır.
<?php
class Post extends Model {
public function tags() {
return $this->belongsToMany(Tag::class);
}
}
// Pivot table: post_tag (post_id, tag_id)
$tags = $post->tags;
$post->tags()->attach($tagId);
$post->tags()->detach($tagId);
$post->tags()->sync([1, 2, 3]);hasManyThrough
Uzakta ilişkili modellere erişin: bir Country, User'lar üzerinden birçok Post'a sahiptir.
<?php
class Country extends Model {
public function posts() {
return $this->hasManyThrough(Post::class, User::class);
}
}Polimorfik İlişkiler
Polimorfik ilişkiler kullanarak bir Post'a veya Video'ya ait olabilen bir Comment modeli oluşturun.
<?php
class Comment extends Model {
public function commentable() {
return $this->morphTo();
}
}
class Post extends Model {
public function comments() {
return $this->morphMany(Comment::class, "commentable");
}
}İlişkinin Varlığı Sorguları
Modelleri bir ilişkinin varlığına göre sorgulayın.
<?php
// Posts that have at least one comment:
$commented = Post::has("comments")->get();
// Posts with >= 3 comments:
$popular = Post::has("comments", ">=", 3)->get();whereHas
İlişki koşullarına göre filtreleyin.
<?php
$phpPosts = Post::whereHas("tags", function ($q) {
$q->where("name", "PHP");
})->get();İlişki Yöntemleri ve Dinamik Özellikler
$user->posts(), sorgu oluşturucuyu döndürür; bunu zincirleyebilirsiniz. $user->posts, yüklenmiş Collection'ı döndürür.
Özet
İlişkileri hasOne, hasMany, belongsTo, belongsToMany döndüren yöntemler olarak tanımlayın. Bunlara dinamik özellikler olarak erişin veya yöntem çağrısı üzerinden sorguları zincirleyin.
Hızlı Kontrol
Hangi ilişki türü bir ara tablosu kullanır?
Sıkça Sorulan Sorular
“Eloquent İlişkileri” dersi ücretsiz mi?
Evet — “Eloquent İlişkileri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Eloquent İlişkileri” dersinde ne öğreneceğim?
hasOne, hasMany, belongsTo ve çoktan çoğa ilişkileri tanımlayın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Eloquent İlişkileri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.