Da, `LoadMissing" se lahko uporablja z ugnezdenimi odnosi v Laravelu, vendar se je treba zavedati nekaj niansov.
Kaj je `LoadMissing`?
Metoda `LoadMissing" v Laravelovi zgovornosti se uporablja za željo po obremenitvi le, če na primer modela še niso bili naloženi. To pomaga preprečiti odvečne poizvedbe s preverjanjem, ali so podatki o odnosih že prisotni, preden ponovno poizvedujejo po bazi podatkov [6].
Uporaba `loadMissing 'z ugnezdenimi odnosi
- V zapisu pike lahko določite ugnezdene odnose z `loadMissing", kot je "" avtor.contacts ", da nalagate ugnezdeno razmerje samo, če manjka [7].
- Vendar pa obstaja znano vedenje, kjer lahko Laravel, če "nalagate" gnezdeni odnos razmerja, ki je že naložen, ponovno naloži odnos staršev. Na primer, če ste na model že naložili `napise", potem klic `loadMissing (" napisi.nestedRelation ")" povzroči, da je "napisi" v celoti ponovno nalagal [1].
- To pomeni, da lahko, medtem ko "LoadMissing" podpira ugnezdene odnose, lahko sproži ponovno nalaganje vmesnih odnosov, če so bili prej naloženi, vendar brez ugnezdenega odnosa.
Praktični premisleki
- `LoadMissing` je uporabna, če želite pogojno željno obremenitev in preprečiti podvojene poizvedbe, če je razmerje že naloženo.
- Za ugnezdene odnose se morate zavedati, da lahko nalaganje ugnezdenega razmerja, ki manjka iz predhodno naloženega odnosa staršev, povzroči, da starševski odnos do ponovnega nalaganja, kar lahko vpliva na uspešnost.
- Če se želite izogniti takšnim ponovnim nalaganjem, boste morda morali skrbno upravljati, kdaj in kako nalagate ugnezdene odnose ali razmislite, da jih nestrpno naložite vnaprej z `z ()`.
Povzetek
- Da, `LoadMissing` se lahko uporablja z ugnezdenimi odnosi z uporabo pik.
- Nalagajo ugnezdene odnose le, če jim manjka.
- če pa je starševsko razmerje naloženo brez ugnezdenega razmerja, lahko `LoadMissing` ponovno naloži odnos nadrejenosti, da pridobi gnezdene podatke [1] [6] [7].
To vedenje je pomembno upoštevati, da se izognete nepričakovanim večkratnim poizvedbam pri delu z ugnezdeno željno obremenitvijo v Laravelu.
Navedbe:
[1] https://github.com/laravel/framework/isissue/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nested-relation-in-graphql
[3] https://compositecode.blog/2023/07/25/Graphql-nested-queries-relationships-practices/
[4] https://github.com/fifemon/graphql-tatasource/isissue/15
[5] https://www.sea-ql.org/sea-orm-cookbook/001-how-to--naad-nested-relation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-purpose-of-the-loadmissing-function
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eager-loader-of-moftiple-nested-relationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prismo.io/docs/orm/primma-client/queries/relation-queries