Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Eloquent Olmadan Eager Loading: Laravel Koleksiyonu ile hasMany İlişkisi
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Eloquent Olmadan Eager Loading: Laravel Koleksiyonu ile hasMany İlişkisi

Yazılım

Eloquent Olmadan Eager Loading: Laravel Koleksiyonu ile hasMany İlişkisi

teknomers
Son güncelleme: 19 Mart 2026 12:09
teknomers
Paylaş
Paylaş

import Tabs from ‘@theme/Tabs’;
import TabItem from ‘@theme/TabItem’;

İki ayrı koleksiyona ihtiyacım vardı ve bunları ilişkisel bir biçimde ilişkilendirmek istiyordum, fakat Eloquent modelleriyle çalışmıyordum. Laravel’in Collection sınıfı güçlüdür, ancak iki farklı veri kümesi arasında birden fazla ilişkiyi ifade edecek yerleşik bir yöntemi yoktur. Bu sorunu düzeltmek için laravel-collection-has-many kütüphanesini geliştirdim.



Ne Oldu?

laravel-collection-has-many, Laravel’in Collection sınıfına hasMany() makrosu ekleyen küçük bir PHP kütüphanesidir. Bu, ilişkili bir koleksiyonu ana koleksiyona iliştirmeyi sağlar; bu işlem, Eloquent’in eager loading’ine benzer ancak düz veriler için geçerlidir. $users->hasMany($posts, 'user_id', 'id', 'posts') çağrısından sonra, koleksiyondaki her kullanıcı, eşleşen öğeleri içeren bir posts özelliği kazanır.

flowchart LR
    A[Parent Collection\nusers] --> B[hasMany Macro]
    C[Related Collection\nposts] --> B
    B --> D[Group Related by Foreign Key\nO(n+m) single pass]
    D --> E[Attach to Parent\neach user gains 'posts' property]
    E --> F[Enriched Collection\nusers with nested posts]
Enter fullscreen mode
Exit fullscreen mode

Temel işlevsellik değişmedi: O(n+m) gruplama, tembel iç içe geçirme yerine, hem dizileri hem de nesneleri destekleme, sonuçları koleksiyon içinde otomatik olarak sarma ve tamamen özelleştirilebilir anahtar adları.



Teknoloji Yığını

BileşenTeknolojiNeden
DilPHP 8.1 – 8.4Tüm aktif sürümler için tam matris CI
FrameworkLaravel CollectionsMikro sistemi, tam bir framework gerektirmediği için
CIGitHub ActionsHer push/PR, tüm PHP sürümlerini test eder
Paket formatıComposer (Packagist uyumlu)composer require çalışır
LisansMITKullan, fork et, sat



Ne Değişti?

Bu güncelleme yayınlama hazır olma ile ilgilidir, yeni özelliklerle değil.

💡 İpucu: Paketten Önce Altyapıyı Göndermeyi Unutmayın

CI, lisans ve bir değişiklik günlüğü olmadan çalışan bir kütüphane, kişisel bir projedir. Üçü de olan bir kütüphane, diğer ekiplerin benimseyebileceği bir bağımlılıktır. CI matrisinizi, lisans dosyanızı ve değişiklik günlüğünü, v1.0.0’ı etiketlemeden önce yerine getirin.

⚠️ Dikkat: Lisans Yok = Benimseme Yok

Paket işlevsel olsa da, açık bir lisans yoktu, bu da herhangi bir yasal inceleme süreci olan bir organizasyonda benimsenmesini engelliyor. Eğer başkalarının kullanmasını istediğiniz bir paket oluşturuyorsanız, MIT LİSANSI, eklemeniz gereken ilk dosya olmalıdır, son değil.

php title="usage-example.php" showLineNumbers
use Illuminate\Support\Collection;

$users = collect([
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
]);

$posts = collect([
['user_id' => 1, 'title' => 'First Post'],
['user_id' => 1, 'title' => 'Second Post'],
['user_id' => 2, 'title' => 'Bob Writes'],
]);

// highlight-next-line
$users->hasMany($posts, 'user_id', 'id', 'posts');

// Alice şimdi $user['posts'] => 2 gönderiden oluşan Koleksiyon
// Bob şimdi $user['posts'] => 1 gönderiden oluşan Koleksiyon






yaml title=".github/workflows/test.yml" showLineNumbers
strategy:
  matrix:
php-version: ['8.1', '8.2', '8.3', '8.4']
steps:
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
- run: composer install
  # highlight-next-line
- run: vendor/bin/phpunit
Enter fullscreen mode
Exit fullscreen mode

MIT LİSANSI eklendi. GitHub Actions CI, PHP 8.1, 8.2, 8.3 ve 8.4 matrisine karşı test suite'ini çalıştırıyor. Her push ve pull isteği, pipeline'ı tetikler. CHANGELOG.md, v1.0.0 girişiyle ilk kararlı sürümü belgelemektedir. Paket artık Packagist yayınlamaya hazırdır.

Yayınlama kontrol listesi

ÖğeDurum
MIT LİSANSIEklendi
GitHub Actions CI (PHP 8.1-8.4)Çalışıyor
README rozetleri (CI, PHP sürümleri, lisans)Eklendi
CHANGELOG.md (v1.0.0)Eklendi
Composer meta verisi + otomatik yüklemeYapılandırıldı
Packagist'e hazırEvet



Drupal ve WordPress için Neden Önemlidir?

Drupal geliştiricileri genellikle özel veritabanı sorgularından, Görünümler sonuçlarından veya JSON:API yanıtlarından gelen düz dizilerle çalışmaktadırlar ve bunları Eloquent olmadan ilişkisel olarak gruplamak zorundadırlar. Bu kütüphanenin hasMany deseni, herhangi bir PHP dizi koleksiyonu üzerinde çalışarak Drupal özelleştirilmiş modüllerinde veya göç betiklerinde ebeveyn-çocuk verilerini verimli bir şekilde ilişkilendirmek için doğrudan kullanılabilir. WordPress geliştiricileri de, WP_Query dışındaki wp_posts ve wp_postmeta gibi ilişkileri birleştirirken aynı zorlukla karşı karşıya kalmaktadır -- O(n+m) gruplama yaklaşımı, özel WordPress yönetici panellerini yavaşlatan N+1 tuzağından kaçınmanıza yardımcı olur.



Teknik Çıkarım

Paketinizi göndermeden önce altyapıyı gönderin. CI, lisans ve değişiklik günlüğü olmadan çalışan bir kütüphane, bir kişisel projedir. Üçü de olan bir kütüphane, diğer ekiplerin benimseyebileceği bir bağımlılıktır. Bu güncellemedeki kod, önceki sürümle aynı; değer tamamen paketlemede yatıyor. Başkalarının kullanmasını istediğiniz bir Laravel paketi geliştiriyorsanız, CI matrisini, lisans dosyasını ve değişiklik günlüğünü, v1.0.0'ı etiketlemeden önce yerine koyun. Maliyeti bir öğleden sonradır. Karşılığında ilk genel sürümünüz, başından itibaren güvenilir olur.



Referanslar


Sadece kod yazan değil, ekibinizin çıktısını katlayan AI sistemleri inşa eden bir Mimara mı ihtiyaç duyuyorsunuz? Kurumsal CMS vaka çalışmalarımı görmek için victorjimenezdev.github.io adresine göz atın veya LinkedIn üzerinden benimle bağlantı kurun.


İlk yayım tarihi VictorStack AI — Drupal & WordPress Referansı olarak yayımlanmıştır.

Kaynak: Orijinal Makale

Contents
  • Ne Oldu?
  • Teknoloji Yığını
  • Ne Değişti?
  • Drupal ve WordPress için Neden Önemlidir?
  • Teknik Çıkarım
  • Referanslar
Laravel Güvenlik En İyi Uygulamaları: Yaygın Zafiyetlere Karşı Koruma
30.000 Eşzamanlı Kullanıcı için Laravel ile Gerçek Zamanlı Kıymetli Metal Fiyat Akışı Nasıl Geliştirdim
VMware’de “Başka bir işlem dosyanın bir bölümünü kilitlediğinden bu işlem dosyaya erişemiyor.” Hatasının Çözümü
Harika Laravel & Filament: Nihai Seçilmiş Kaynaklar Listesi – Ve Yardımınıza İhtiyacımız Var!
Nginx’i Başlatma, Durdurma ve Yeniden Başlatma Yöntemleri
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Trump Uluslararası Öğrencileri Tehdit Ediyor, Yeni Tasarı Kurtarabilir mi?
Sonraki Makale Fortnite Sezon 2: Çılgın Yeni Hareket Unsurlarıyla Tanışın

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Acil: SOC’ların Sadece %10’u AI’dan Mükemmel Değer Aldığını Söylüyor
Siber Güvenlik
Laravel admin araçlarında sürükle-bırak sıralama, göründüğünden daha hızlı karmaşık hale geliyor.
Yazılım
Renkli Yedek Parçalarla MacBook Neo’yu Kişiselleştirdim
Liste
OpenAI ve Anthropic: Rekabetteki Yatırımcıların Gizli Birlikteliği
Genel
Elegoo’nun Emoji markasıyla sıradışı 3D yazıcı iş birliği 489$
Donanım
Valorant Oyuncuları Oyun İçi DDoS Saldırılarıyla Karşılaşmakta
Oyun
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?