Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan loadmissing worden gebruikt met geneste relaties


Kan loadmissing worden gebruikt met geneste relaties


Ja, `loadmissing` kan worden gebruikt met geneste relaties in Laravel, maar er zijn enkele nuances om op de hoogte te zijn.

Wat is `loadmissing`?

De methode `loadmissing` in Laravel Eloquent wordt alleen gebruikt om laadrelaties te groeiden als ze nog niet op de modelinstantie zijn geladen. Dit helpt redundante vragen te voorkomen door te controleren of de relatiegegevens al aanwezig zijn voordat de database opnieuw wordt opgevraagd [6].

met `loadmissing` met geneste relaties

- U kunt geneste relaties in DOT -notatie specificeren met `loadmissing`, zoals` 'auteur.Contacts' ', om alleen een geneste relatie te laden als deze ontbreekt [7].
- Er is echter een bekend gedrag waar als u een geneste relatie van een relatie die al is geladen een geneste relatie 'loadmissing', de ouderrelatie zelf kan laden. Als u bijvoorbeeld al `inscripties 'op een model hebt geladen, en wordt het aanroepen van` loadmissing (' inscriptions.NestestRelation ') `zal de relatie' inscripties 'volledig herladen [1].
- Dit betekent dat hoewel `loadmissing` geneste relaties ondersteunt, het herladen van de tussenliggende relaties kan veroorzaken als ze eerder werden geladen maar zonder de geneste relatie.

Praktische overwegingen

- `loadmissing` is handig wanneer u voorwaardelijke laadrelaties voorwaardelijk wilt gretsen, waardoor dubbele vragen worden voorkomen als de relatie al is geladen.
- Voor geneste relaties moet u zich ervan bewust zijn dat het laden van een geneste relatie die ontbreekt in een eerder geladen ouderrelatie, de ouderrelatie met herladen kan veroorzaken, wat de prestaties kan beïnvloeden.
- Als u dergelijke herlaads wilt vermijden, moet u mogelijk zorgvuldig beheren wanneer en hoe u geneste relaties laadt of graag wilt dat ze vooraf laden met `met ()`.

Samenvatting

- Ja, `loadmissing` kan worden gebruikt met geneste relaties met behulp van DOT -notatie.
- Het laadt alleen de geneste relaties als ze missen.
- Maar als de ouderrelatie wordt geladen zonder de geneste relatie, kan `loadmissing` de ouderrelatie opnieuw laden om de geneste gegevens op te halen [1] [6] [7].

Dit gedrag is belangrijk om in gedachten te houden om onverwachte meerdere vragen te voorkomen bij het werken met geneste enthousiaste lading in Laravel.

Citaten:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-sested-relation-in-graphql
[3] https://compositecode.blog/2023/07/25/graphql-sested-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-hest-relation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-the-purpose-of-the-laadmissing-function
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eager- loading-of-multiple-hested-relationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries