Jā, “Loadmissing` var izmantot ar ligzdotām attiecībām Laravelā, taču ir dažas nianses, kuras jāzina.
Kas ir `sloadmissing`?
Laravel daiļrunīgā metode tiek izmantota, lai dedzinātu slodzes attiecības tikai tad, ja tās vēl nav ielādētas modeļa instancē. Tas palīdz izvairīties no liekiem vaicājumiem, pārbaudot, vai attiecību dati jau ir sastopami, pirms atkal vaicājot datu bāzi [6].
Izmantojot `Loadmissing` ar ligzdotām attiecībām
- Jūs varat norādīt ligzdotās attiecības punktu notācijā ar “slodzi”, piemēram, `'Autor.contacts'`, lai ielādētu ligzdotu attiecību tikai tad, ja tām trūkst [7].
- Tomēr ir zināma uzvedība, ja, ja jūs `slodzes ligzdota saistība ar jau ir ielādēta, Laravel var pārlādēt pašas vecāku attiecības. Piemēram, ja modelī jau esat ielādējis “uzrakstus”, tad zvanot uz “slodzi (“ uzraksti.nestedRelation ”)` izraisīs “uzrakstu” saistību, lai pilnībā ielādētu [1].
- Tas nozīmē, ka, kamēr “slodzes dēļ” atbalsta ligzdotas attiecības, tas var izraisīt starpposma attiecību pārlādēšanu, ja tās iepriekš tika ielādētas, bet bez ligzdotām attiecībām.
Praktiski apsvērumi
- "Loadmissing" ir noderīga, ja vēlaties nosacīti dedzīgas slodzes attiecības, novēršot vaicājumu dublikātus, ja attiecība jau ir ielādēta.
- Ligzdotām attiecībām jums jāapzinās, ka ligzdotu attiecību iekraušana no iepriekš ielādētām vecāku attiecībām var izraisīt vecāku attiecību pārlādēšanu, kas var ietekmēt veiktspēju.
- Ja vēlaties izvairīties no šādām pārlādēm, jums, iespējams, būs rūpīgi jāpārvalda, kad un kā jūs ielādējat ligzdotas attiecības vai apsverat, ka tās ir dedzīgas ielādes iepriekš ar `ar ()`.
kopsavilkums
- Jā, "Loadmissing" var izmantot ar ligzdotām attiecībām, izmantojot punktu notāciju.
- Tas ielādē ligzdotās attiecības tikai tad, ja tām trūkst.
- bet, ja vecāku sakarība tiek ielādēta bez ligzdotās sakarības, "Loadmissing" var atkārtoti ielādēt vecāku sakarību, lai ielādētu ligzdotos datus [1] [6] [7].
Šī uzvedība ir svarīga, lai paturētu prātā, lai izvairītos no negaidītiem vairākiem vaicājumiem, strādājot ar ligzdotu dedzīgu iekraušanu Laravelā.
Atsauces:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nested-in-in-graphql
[3.]
[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.]
.
[8] https://docs.sqlalchemy.org/14/orm/loading_relationhips.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries