Kyllä, "kuormitusta" voidaan käyttää sisäkkäisten suhteiden kanssa Laravelissa, mutta on joitain vivahteita olla tietoisia.
Mikä on "latausmissing"?
Laravel Eloquent -tapahtumassa olevaa "Latausmissing" -menetelmää käytetään innokkaisiin kuormitussuhteisiin vain, jos niitä ei ole jo ladattu malli -ilmentymään. Tämä auttaa välttämään tarpeettomia kyselyjä tarkistamalla, onko suhdetiedot jo läsnä ennen tietokannan kyselyä uudelleen [6].
käyttämällä `latausmissing` -sisäisissä suhteissa
- Voit määrittää sisäkkäiset suhteet DOT -merkinnässä "kuormituksen" kanssa, kuten "" kirjoittaja.contacts ", sisäkkäisen suhteen lataaminen vain, jos se puuttuu [7].
- On kuitenkin tiedossa olevaa käyttäytymistä, jossa jos "ladataan" jo ladattujen suhteen sisäkkäisen suhteen, Laravel voi ladata itse vanhemman suhteen. Esimerkiksi, jos olet jo ladannut "kirjoitukset" malliin, niin kutsuminen `latausministeriöksi ('kirjoitukset.nestRelation')" aiheuttaa "kirjoitusten" yhteyden uudelleen latautumiseen [1].
- Tämä tarkoittaa, että vaikka "latausministeri" tukee sisäkkäisiä suhteita, se voi laukaista väliaikaisten suhteiden uudelleenlataamisen, jos ne aikaisemmin ladataan, mutta ilman sisäkkäistä suhdetta.
käytännön näkökohdat
- `latausmissing` on hyödyllinen, kun haluat ehdollisesti innokkaita kuormitussuhteita, estäen kaksoiskappaleet, jos suhde on jo ladattu.
- Sisäkkäisten suhteiden osalta sinun tulee olla tietoinen siitä, että aiemmin ladatusta vanhemman suhteesta puuttuvan sisäkkäisen suhteen lataaminen voi aiheuttaa vanhemman suhteen uudelleenlataan, mikä voi vaikuttaa suorituskykyyn.
- Jos haluat välttää tällaisia uudelleenlatauksia, saatat joutua hallitsemaan huolellisesti, milloin ja miten lataat sisäkkäiset suhteet tai harkita innokkaasti lataamalla niitä etukäteen `kanssa ()`.
Yhteenveto
- Kyllä, "latausmissing" voidaan käyttää sisäkkäisten suhteiden kanssa pisteiden merkinnällä.
- Se lataa vain sisäkkäiset suhteet, jos ne puuttuvat.
- Mutta jos vanhempien suhde ladataan ilman sisäkkäistä suhdetta, "kuormitus" voi ladata vanhemman suhteen uudelleen sisäkkäisten tietojen hakemiseen [1] [6] [7].
Tämä käyttäytyminen on tärkeää pitää mielessä välttää odottamattomia useita kyselyjä työskennellessään sisäkkäisen innokkaan kuormituksen kanssa Laravelissa.
Viittaukset:
[1] https://github.com/laravel/framework/issues/23027
.
.
[4] https://github.com/fifemon/graphql-datasource/issues/15
.
.
.
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries