Taip, „Loadmissing“ gali būti naudojamas su įdėtais ryšiais „Laravel“, tačiau yra keletas niuansų, kuriuos reikia žinoti.
Kas yra „apkrova“?
„Laravel Eloquent“ metodas „apkrovos ligos“ yra naudojamas norėdami įkelti ryšius tik tuo atveju, jei jie dar nebuvo įkelti į modelio egzempliorių. Tai padeda išvengti nereikalingų užklausų, patikrinant, ar santykių duomenys jau yra prieš pradedant duomenų bazę [6].
naudojant „apkrovą“ su įdėtais santykiais
- Norėdami įkelti įdėtą ryšį tik tuo atveju, jei trūksta, galite nurodyti įdėtus ryšius taškiniuose taškuose su „apkrovos ligomis“, tokiais kaip „autorius.Contacts“.
- Tačiau yra žinomas elgesys, kai jei jūs „apkraunate“ įterptą santykį, kuris jau yra įkeltas, „Laravel“ gali perkrauti patį tėvų santykį. Pvz., Jei ant modelio jau esate įkėlę „užrašus“, tada paskambinę į „apkrovos įvedimą“ („užrašai“.
- Tai reiškia, kad nors „apkrovos sutvarkymas“ palaiko įdėtus santykius, jis gali sukelti tarpinių santykių perkrovimą, jei jie anksčiau buvo pakrauti, bet be įdėto santykio.
Praktiniai svarstymai
- „LoadMissing“ yra naudinga, kai norite sąlygiškai nekantrauti ryšių su apkrovomis, užkirsti kelią pasikartojančioms užklausoms, jei santykis jau įkeltas.
- Įterptiems ryšiams turėtumėte žinoti, kad įterpto santykio, trūkstamo iš anksčiau įkeltų tėvų santykių, įkėlimas gali sukelti tėvų ryšį su perkrovimu, o tai gali turėti įtakos našumui.
- Jei norite išvengti tokio perkrovos, gali tekti atidžiai valdyti, kada ir kaip įkeliate įdėtus santykius, arba apsvarstykite galimybę iš anksto įkelti juos iš anksto „su ()“.
Santrauka
- Taip, „apkrovos sutvarkymas“ gali būti naudojamas su įdėtais ryšiais, naudojant DOT žymėjimą.
- Tai apkraunami tik įdėtus santykius, jei jų trūksta.
- Bet jei pirminis santykis yra įkeltas be įdėto santykio, „apkrovos sutrikimas“ gali perkrauti pirminį ryšį su įdėtų duomenų rinkimu [1] [6] [7].
Tokį elgesį svarbu nepamiršti, kad išvengtumėte netikėtų daugybinių klausimų, dirbant su įterpiamu nekantriu pakrovimu „Laravel“.
Citatos:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nested-rest-in-graphql
[3] https://compositecode.blog/2023/07/25/graphql-nted-queries-reliationshipshipships-practices/
[4] https://github.com/fifemon/graphql-datasource/issues/15
[5] https://www.sea-ql.org/sea-orm-cookbooks/001-how-to-load-stiest-rested-rest-rest-rest.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-purpose-of-the-loadmissing-funkcija
[7] https://stackoverflow.com/questions/35490728/laravel-lequent-eager-loading-of-multiple-stiest-riesthipshipsht/53205641
[8] https://docs.sqlalchemy.org/14/orm/Loading_relationshipships.html
[9] https://www.prisma.io/docs/orm/prisma-lient/queries/relation-queries