Den `WhenLoaded ()` -metoden i Laravel er spesielt designet for å jobbe med veltalende modellforhold. Den inkluderer betinget forhold i forhold til API -ressurssvar bare hvis forholdet er ivrig lastet på den veltalende modellen. Denne metoden hjelper deg med å unngå unødvendige databasespørsmål og holder API -svarene mager ved bare å inkludere relaterte data når de faktisk lastes.
Brukskontekst av `når Loaded ()`
- Veltalende modeller og relasjoner: `Når lastet ()` sjekker om et forhold på en veltalende modell er lastet inn ved hjelp av metoder som `med ()` eller `last ()`. Hvis forholdet er lastet, returnerer det de relaterte dataene; Ellers returnerer det ingenting eller en standardverdi. Denne oppførselen er tett koblet med veltalende interne metode `relasjonsloaded ()` som avgjør om forholdsdataene er tilgjengelige på modellforekomsten [1] [7] [8].
- API -ressurser: Det brukes ofte i Laravel API -ressursklasser for å betinget å inkludere relaterte ressurser eller samlinger basert på om forholdene var ivrige lastet, forbedret ytelsen og unngå N+1 -spørringsproblemet [1] [8].
kan `når lastet ()` brukes med tredjepartsbiblioteker?
- Ingen direkte støtte utenfor veltalende modeller: Siden `når lastet ()` er avhengig av den veltalende modellens interne tilstand for å sjekke om et forhold er lastet (`relasjonsloaded ()` metode), er det iboende designet for veltalende modeller og deres forhold. Tredjepartsbiblioteker som ikke utvider eller etterligner veltalende modeller, og deres relasjonsbelastningsmekanismer kan ikke direkte bruke `når lastet ()`.
-Løsninger: Hvis et tredjepartsbibliotek returnerer objekter eller samlinger som ikke er veltalende modeller, kan du ikke bruke `når lastet ()` as-er. Du må implementere lignende betinget logikk manuelt eller pakke inn objektene i en tilpasset ressurs som etterligner atferden. Alternativt kan du manuelt sjekke om de relaterte dataene er til stede før de inkluderer de i responsen.
Sammendrag
- `Når lastet ()` er bygget for å fungere utelukkende med veltalende modeller og deres lastede forhold.
- Det avhenger av veltalende interne forhold til lastetilstand, så det kan ikke brukes direkte med tredjepartsbiblioteker som ikke bruker veltalende modeller.
- For å betinget å inkludere relaterte data fra tredjepartskilder, må du implementere dine egne betingede sjekker eller ressursinnpakninger.
Dette gjør `når lastet ()` et kraftig verktøy for å optimalisere Laravel API -svar, men begrenset til den veltalende ORM -konteksten [1] [7] [8].
Sitasjoner:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-in-laravel-api-resources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-ousing-count-with-whenloaded
[3] https://laravel.com/docs/12.x/eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-get-a-single-field-from-a-laravel-wnoaded resource
[5] https://www.youtube.com/watch?v=LS7M14ECASU
[6] https://stackoverflow.com/questions/66675594/can-i-use-with-instead-load-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-metods
[8] https://laravel-news.com/whenloaded