Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan når lastet () brukes med tredjepartsbiblioteker eller bare med veltalende modeller


Kan når lastet () brukes med tredjepartsbiblioteker eller bare med veltalende modeller


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