Metoden `Whenloaded ()` i Laravel er specifikt designet til at arbejde med veltalende modelforhold. Det inkluderer betinget af forholdsdata i API -ressource -svar kun, hvis forholdet er blevet ivrig belastet på den veltalende model. Denne metode hjælper med at undgå unødvendige databaseforespørgsler og holder API -svar ikke kun med at inkludere relaterede data, når de faktisk er indlæst.
Brug kontekst af `når loaded ()`
- Veloquente modeller og -forhold: `Når loaded ()` kontrollerer, om et forhold på en veltalende model er indlæst ved hjælp af metoder som `med ()` eller `Load ()`. Hvis forholdet indlæses, returnerer det de relaterede data; Ellers returnerer det intet eller en standardværdi. Denne opførsel er tæt koblet med Eloquents interne metode `relationLoaded ()`, der bestemmer, om forholdsdataene er tilgængelige på modelinstansen [1] [7] [8].
- API -ressourcer: Det bruges ofte i Laravel API -ressourceklasser til betingelse af at omfatte relaterede ressourcer eller samlinger, der er baseret på, om forholdene var ivrige belastet, forbedrede ydelsen og undgår N+1 -forespørgselsproblemet [1] [8].
Kan `når loaded () 'bruges med tredjepartsbiblioteker?
- Ingen direkte support uden for veltalende modeller: Da `når load ()` er afhængig af den veltalende model's interne tilstand for at kontrollere, om et forhold indlæses (`relationLoaded ()` metode), er den iboende designet til veltalende modeller og deres forhold. Tredjepartsbiblioteker, der ikke udvider eller efterligner veltalende modeller og deres forholdsbelastningsmekanismer, kan ikke direkte bruge `, når de er belastet ()`.
-Løsning: Hvis et tredjepartsbibliotek returnerer objekter eller samlinger, der ikke er veltalende modeller, kan du ikke bruge `når loaded ()` as-is. Du bliver nødt til at implementere lignende betingede logik manuelt eller pakke disse objekter i en brugerdefineret ressource, der efterligner opførslen. Alternativt kan du manuelt kontrollere, om de relaterede data er til stede, før de inkluderer dem i svaret.
Resume
- `Når load ()` er bygget til at arbejde udelukkende med veltalende modeller og deres indlæste forhold.
- Det afhænger af Eloquents interne relationslastningstilstand, så det kan ikke bruges direkte med tredjepartsbiblioteker, der ikke bruger veltalende modeller.
- For betingelse af relaterede data fra tredjepartskilder skal du implementere dine egne betingede kontroller eller ressourceindpakninger.
Dette gør `når Obloaded ()` et kraftfuldt værktøj til at optimere Laravel API -svar, men begrænset til den veltalende ORM -kontekst [1] [7] [8].
Citater:
[1] https://henestrosa.dev/blog/how-to-brug-whenloaded-in-laravel-api-ressources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-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-whenloaded-ressource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
)
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-metods
[8] https://laravel-news.com/whenLoaded