Evet, `` LoadMissing '' Laravel'de iç içe ilişkilerle kullanılabilir, ancak farkında olması gereken bazı nüanslar vardır.
`` loadmissing '' nedir?
Laravel Eloquent'teki `` yükleme '' yöntemi, yük ilişkilerini yalnızca model örneğine yüklenmemişse istekli olmak için kullanılır. Bu, veritabanını tekrar sorgulamadan önce ilişki verilerinin zaten mevcut olup olmadığını kontrol ederek gereksiz sorgulardan kaçınmaya yardımcı olur [6].
iç içe geçmiş ilişkilerle `` loadMissing '' kullanmak
- iç içe bir ilişkiyi yalnızca eksikse yüklemek için `` yazar.contacts '' gibi `` loadMissing '' ile DOT notasyonunda iç içe ilişkiler belirleyebilirsiniz [7].
- Bununla birlikte, zaten yüklenmiş bir ilişkinin iç içe bir ilişkisini `` yüklüyorsanız '', Laravel'in ana ilişkiyi yeniden yükleyebileceği bilinen bir davranış vardır. Örneğin, bir modele zaten `` yazıtlar '' yüklediyseniz, `` yükleme ('yazıtlar.nestrelation' ')' adını çağırırsanız, `` yazıtlar '' ilişkisinin tamamen yeniden yüklenmesine neden olur [1].
- Bu, `` yükleme '' iç içe ilişkileri desteklerken, daha önce yüklenmişlerse, ancak iç içe geçmiş ilişki olmadan ara ilişkilerin yeniden yüklenmesini tetikleyebileceği anlamına gelir.
Pratik Hususlar
- `` LoadMissing '', koşullu olarak istekli yük ilişkileri yapmak istediğinizde kullanışlıdır ve ilişki zaten yüklenirse yinelenen sorguları önler.
- iç içe ilişkiler için, daha önce yüklenmiş bir ana ilişkisinde eksik içilmiş bir ilişkinin yüklenmesinin, ana ilişkinin yeniden yüklenmesine neden olabileceğini ve bu da performansı etkileyebileceğini bilmelisiniz.
- Bu tür yeniden yüklemelerden kaçınmak istiyorsanız, iç içe ilişkileri ne zaman ve nasıl yüklediğinizi dikkatlice yönetmeniz veya bunları `() ile` ile önceden yüklemeyi düşünmeniz gerekebilir.
Özet
- Evet, `` LoadMissing '', DOT gösterimi kullanılarak iç içe ilişkilerle kullanılabilir.
- Yalnızca eksik oldukları takdirde iç içe ilişkileri yükler.
- ancak ana ilişki iç içe geçmiş ilişki olmadan yüklenirse, `` loadMissing '', iç içe geçmiş verileri almak için ana ilişkiyi yeniden yükleyebilir [1] [6] [7].
Bu davranış, Laravel'de iç içe istekli yükleme ile çalışırken beklenmedik birden fazla sorgudan kaçınmak için akılda tutulması önemlidir.
Alıntılar:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nest-relation-in-graphql
[3] https://compositecode.blog/2023/07/25/graphql-yuva-queries-relationships-practices/
[4] https://github.com/fifemon/graphql-datasource/issues/15
[5] https://www.sea-ql.org/sea-mo-mo-cookbook/001-how-to-out-nested-elation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-prose-of-loadmissing-fonction
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eger-o-fouting-fo-fouting-of-multiple-nested-relationshipss/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-flient/queries/relation-queries