Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Használható -e a loadising beágyazott kapcsolatokkal?


Használható -e a loadising beágyazott kapcsolatokkal?


Igen, a „LoadMissing” felhasználható a Laravel -ben lévő beágyazott kapcsolatokkal, de vannak olyan árnyalatok, amelyekkel tisztában kell lenniük.

Mi az a „loadmissing”?

A „LoadMissing” módszert a Laravel ékesszólóban csak akkor használják, ha a terhelési kapcsolatok csak akkor is lelkesednek, ha még nem töltötték be a modellpéldányra. Ez segít elkerülni a redundáns lekérdezéseket azáltal, hogy ellenőrizze, hogy a kapcsolati adatok már léteznek -e, mielőtt az adatbázist újra lekérdezik [6].

A „LoadMissing” használata beágyazott kapcsolatokkal

.
- Van azonban egy ismert viselkedés, ahol ha a már betöltött kapcsolat beágyazott kapcsolatát tölti be, akkor Laravel újratöltheti a szülő kapcsolatát. Például, ha már betöltötte a „feliratot” egy modellre, akkor a „LoadMissing ('felirat.nestedRelation”) hívja a „feliratok” kapcsolatát az újratöltéshez [1].
- Ez azt jelenti, hogy míg a „LoadMissing” támogatja a beágyazott kapcsolatokat, ez kiválthatja a közbenső kapcsolatok újratöltését, ha korábban betöltötték őket, de a beágyazott kapcsolat nélkül.

Gyakorlati megfontolások

- A „LoadMissing” akkor hasznos, ha feltételesen lelkes terhelési kapcsolatokat szeretne, megakadályozva a másolatú lekérdezéseket, ha a kapcsolat már betöltött.
- A beágyazott kapcsolatok esetében tisztában kell lennie azzal, hogy a korábban betöltött szülői relációból hiányzó beágyazott kapcsolat betöltése okozhatja a szülő kapcsolatát az újratöltéssel, ami befolyásolhatja a teljesítményt.
- Ha el akarja kerülni az ilyen újratöltéseket, akkor óvatosan kell kezelnie, mikor és hogyan tölti be a beágyazott kapcsolatokat, vagy mérlegelje, hogy a lelkes betöltés előzetesen betöltse őket a `with () -vel.

Összegzés

- Igen, a „LoadMissing” beágyazott kapcsolatokkal használható DOT jelöléssel.
- Csak akkor tölti be a beágyazott kapcsolatokat, ha hiányoznak.
- De ha a szülői kapcsolat betöltődik a beágyazott kapcsolat nélkül, akkor a „LoadMissing” újratöltheti a szülői kapcsolatot a beágyazott adatok lekéréséhez [1] [6] [7].

Ezt a viselkedést fontos szem előtt tartani, hogy elkerülje a váratlan több lekérdezést, amikor a Laravelben fészkelt, lelkes terheléssel dolgoznak.

Idézetek:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-hested-reelation-in-graphql
[3] https://compositecode.blog/2023/07/25/graphql-sted-queries-reationships-practices/
[4] https://github.com/fifemon/graphql-dataSource/issues/15
[5] https://www.sea-ql.org/sea-morm-cookbook/001-how-to-load-steded-reatation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-the-purose-of-the-loadmissing-function
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eage-loading-of-multiple-thed-reelations/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries