Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan belastning brukes med nestede forhold


Kan belastning brukes med nestede forhold


Ja, `LoadMissing` kan brukes med nestede forhold i Laravel, men det er noen nyanser å være klar over.

Hva er `LoadMissing`?

"LoadMissing` -metoden i Laravel veltalende brukes til å ivrige belastningsforhold bare hvis de ikke allerede har blitt lastet på modellforekomsten. Dette hjelper til med å unngå overflødige spørsmål ved å sjekke om relasjonsdataene allerede er til stede før du spør om databasen igjen [6].

Bruker `LoadMissing` med nestede forhold

- Du kan spesifisere nestede forhold i prikknotasjon med `LoadMissing`, for eksempel` 'Forfatter. Kontakter', for å laste inn et nestet forhold bare hvis det mangler [7].
- Imidlertid er det en kjent oppførsel der hvis du `LoadMissing 'et nestet forhold til en relasjon som allerede er lastet, kan Laravel laste inn foreldrenes forhold i seg selv. For eksempel, hvis du allerede har lastet inn `inskripsjoner 'på en modell, vil du kalle` LoadMissing (' Inscriptions.NestEdRelation ') `føre til at` inskripsjoner' forholdet til omlasting helt [1].
- Dette betyr at mens `LoadMissing` støtter nestede forhold, kan det utløse omlasting av mellomforholdene hvis de tidligere var lastet, men uten det nestede forholdet.

Praktiske hensyn

- `LoadMissing` er nyttig når du vil betinget ivrige belastningsforhold, og forhindre dupliserte spørsmål hvis forholdet allerede er lastet.
- For nestede forhold, bør du være klar over at å laste inn et nestet forhold som mangler fra et tidligere lastet foreldreforhold kan forårsake foreldreforholdet til omlasting, noe som kan påvirke ytelsen.
- Hvis du vil unngå slike omlastinger, kan det hende du må administrere når og hvordan du laster inn nestede forhold eller vurderer ivrig å laste dem på forhånd med `med ()`.

Sammendrag

- Ja, `LoadMissing` kan brukes med nestede forhold ved bruk av DOT -notasjon.
- Det laster bare de nestede forholdene hvis de mangler.
- Men hvis foreldreforholdet er lastet uten det nestede forholdet, kan `LoadMissing` laste inn foreldreforholdet for å hente de nestede dataene [1] [6] [7].

Denne oppførselen er viktig å huske på å unngå uventede flere spørsmål når du jobber med nestet ivrig belastning i Laravel.

Sitasjoner:
[1] https://github.com/laravel/framework/issues/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-dataSource/issues/15
[5] https://www.sea-ql.org/sea-orm-cookbook/001-how-to-load-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-eerger-loading-of-multiple-nested-relationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries