Önden Yükleme ve Sorgu Kapsamları
Önden yüklemeyle N+1 sorgularını önleyin ve sorgu kapsamlarıyla mantığı yeniden kullanın.
Önden Yükleme ve Sorgu Kapsamları, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. 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.
N+1 Sorunu
Bir döngü içinde bir ilişkiye erişildiğinde tembel yükleme her model için bir sorgu çalıştırır — büyük ölçekte son derece maliyetlidir.
<?php
$posts = Post::all(); // 1 query
foreach ($posts as $post) {
echo $post->author->name; // 1 query per post = N+1 total!
}with() ile İstekli Yükleme
İlişkileri baştan, tek bir ek sorguyla istekli olarak yükleyerek N+1 sorununu çözün.
<?php
$posts = Post::with("author")->get(); // 2 queries total
foreach ($posts as $post) {
echo $post->author->name; // no extra query
}Birden Çok İlişkiyi İstekli Yükleme
Birden çok ilişkiyi aynı anda yükleyin.
<?php
$posts = Post::with(["author", "tags", "comments"])->get();İç İçe İstekli Yükleme
Nokta gösterimini kullanarak iç içe ilişkileri yükleyin.
<?php
$posts = Post::with("comments.author")->get();
// Loads posts, their comments, and each comment's authorKısıtlı İstekli Yükleme
İstekli olarak yüklenen ilişkiye koşullar uygulayın.
<?php
$posts = Post::with(["comments" => function ($q) {
$q->where("approved", true)->latest();
}])->get();withCount()
İlişkili modellerin kendilerini yüklemeden, ilişkili bir modelin sayısını yükleyin.
<?php
$posts = Post::withCount("comments")->get();
foreach ($posts as $post) {
echo $post->comments_count;
}Tembel İstekli Yükleme (load())
Daha önce getirilmiş bir koleksiyondaki ilişkileri load() ile istekli olarak yükleyin.
<?php
$posts = Post::all();
// Later, when you know you need the authors:
$posts->load("author");Genel Sorgu Kapsamları
Genel kapsamlar, bir model için tüm sorgulara otomatik olarak kısıtlamalar ekler.
<?php
class PublishedScope implements \Illuminate\Database\Eloquent\Scope {
public function apply(Builder $builder, Model $model): void {
$builder->where("is_published", true);
}
}Yerel Sorgu Kapsamları
Yerel kapsamlar, model üzerinde scope ile başlayan yöntemler olarak tanımlanan yeniden kullanılabilir sorgu kısıtlamalarıdır.
<?php
class Post extends Model {
public function scopePublished(Builder $query): void {
$query->where("is_published", true);
}
public function scopeByUser(Builder $query, int $userId): void {
$query->where("user_id", $userId);
}
}
// Usage:
Post::published()->byUser(1)->latest()->get();Kapsamları Birleştirme
Okunabilir ve yeniden kullanılabilir sorgu mantığı için birden çok yerel kapsamı zincirleyin.
<?php
$posts = Post::published()
->byUser(auth()->id())
->orderBy("created_at", "desc")
->paginate(15);Geliştirme Sırasında N+1'i Algılama
Geliştirme sırasında beklenmeyen sorgu sayılarını algılamak için Laravel Debugbar'ı kullanın veya DB::enableQueryLog() çalıştırın.
Özet
İlişkileri istekli olarak yüklemek ve N+1 sorgularını ortadan kaldırmak için with() kullanın. Sayılar için withCount() kullanın. Yeniden kullanılabilir ve okunabilir sorgu kısıtlamaları için yerel kapsamlar tanımlayın.
Hızlı Kontrol
N+1 sorununu çözmek için ilişkili modelleri istekli olarak hangi yöntem yükler?
Yapay zeka eğitmeniyle PHP öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 49
- Dersler
- 195
Sıkça Sorulan Sorular
“Önden Yükleme ve Sorgu Kapsamları” dersi ücretsiz mi?
Evet — “Önden Yükleme ve Sorgu Kapsamları” 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.
“Önden Yükleme ve Sorgu Kapsamları” dersinde ne öğreneceğim?
Önden yüklemeyle N+1 sorgularını önleyin ve sorgu kapsamlarıyla mantığı yeniden kullanı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 4. dersidir.
“Önden Yükleme ve Sorgu Kapsamları” 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.
Bu kursun tüm dersleri
- Eloquent Modelleri ve Geçişler
- Eloquent ile CRUD
- Eloquent İlişkileri
- Önden Yükleme ve Sorgu Kapsamları