Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kann laden mit verschachtelten Beziehungen verwendet werden


Kann laden mit verschachtelten Beziehungen verwendet werden


Ja, "Loadmiss" kann mit verschachtelten Beziehungen in Laravel verwendet werden, aber es gibt einige Nuancen, die sich bewusst sind.

Was ist `loadming`?

Die "Loadming" -Methode in Laravel eloquent wird verwendet, um die Beziehungen nur dann zu beladen, wenn sie nicht bereits auf die Modellinstanz geladen wurden. Dies hilft, redundante Abfragen zu vermeiden, indem Sie überprüfen, ob die Beziehungsdaten bereits vorhanden sind, bevor die Datenbank erneut abfragt [6].

Verwenden von "Loadmiss" mit verschachtelten Beziehungen

- Sie können verschachtelte Beziehungen in der Punktnotation mit "Loadming" wie "Autor.Contacts" angeben, um eine verschachtelte Beziehung nur dann zu laden, wenn sie fehlt [7].
- Es gibt jedoch ein bekanntes Verhalten, bei dem Laravel die übergeordnete Beziehung selbst neu laden kann, wenn Sie eine verschachtelte Beziehung einer bereits geladenen Beziehung haben. Wenn Sie beispielsweise "Inschriften" auf ein Modell geladen haben, wird das Aufrufen von "Loadmissing (" Inschriften
- Dies bedeutet, dass zwar verschachtelte Beziehungen zwar verschachtelte Beziehungen unterstützt, aber das Nachladen der Zwischenbeziehungen auslösen kann, wenn sie zuvor ohne die verschachtelte Beziehung geladen wurden.

Praktische Überlegungen

- "Loadming" ist nützlich, wenn Sie bedingt eifrige Lastbeziehungen möchten, wodurch doppelte Abfragen verhindern, wenn die Beziehung bereits geladen ist.
- Bei verschachtelten Beziehungen sollten Sie sich bewusst sein, dass das Laden einer verschachtelten Beziehung, die in einer zuvor geladenen Elternbeziehung fehlt, die Elternbeziehung zum Nachladen verursachen kann, was die Leistung beeinträchtigen kann.
- Wenn Sie solche Nachladen vermeiden möchten, müssen Sie möglicherweise sorgfältig verwalten, wann und wie Sie verschachtelte Beziehungen laden oder in Betracht ziehen, sie mit `mit ()` zu laden.

Zusammenfassung

- Ja, "Loadmiss" kann mit verschachtelten Beziehungen unter Verwendung einer Punktnotation verwendet werden.
- Es lädt nur die verschachtelten Beziehungen, wenn sie fehlen.
- Wenn die übergeordnete Beziehung jedoch ohne die verschachtelte Beziehung geladen wird, kann "Lademising" die übergeordnete Beziehung neu laden, um die verschachtelten Daten abzurufen [1] [6] [7].

Dieses Verhalten ist wichtig zu beachten, um unerwartete mehrere Fragen zu vermeiden, wenn sie mit verschachtelter Ladung in Laravel arbeiten.

Zitate:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nestrelation-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-nest-relation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-purple-lof-the-loadming-funktion
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eager-loading-of-multiple-nest-relationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation- queries