Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan når de er load () bruges med tredjepartsbiblioteker eller kun med veltalende modeller


Kan når de er load () bruges med tredjepartsbiblioteker eller kun med veltalende modeller


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