Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan när det laddas () användas med tredjepartsbibliotek eller endast med vältaliga modeller


Kan när det laddas () användas med tredjepartsbibliotek eller endast med vältaliga modeller


Metoden `när laddad () i Laravel är specifikt utformad för att arbeta med vältaliga modellförhållanden. Det inkluderar villkorligt relationsdata i API -resurssvar endast om förhållandet har belastats på den vältaliga modellen. Denna metod hjälper till att undvika onödiga databasfrågor och håller API -svar lutande genom att endast inkludera relaterade data när den faktiskt laddas.

Användningskontext för `när laddas ()`

- Välaktiga modeller och relationer: `när laddas ()` kontroller om en relation på en vältalig modell har laddats med metoder som `med ()` eller `load ()`. Om förhållandet laddas returnerar det relaterade uppgifter; Annars returnerar det ingenting eller ett standardvärde. Detta beteende är tätt kopplat till vältalande interna metod `relationLoaded ()` som bestämmer om relationsdata är tillgängliga på modellinstansen [1] [7] [8].

- API -resurser: Det används vanligtvis i Laravel API -resursklasser för att villkorligt inkludera relaterade resurser eller samlingar baserat på om förhållandena var ivriga laddade, förbättra prestanda och undvika N+1 -frågeställningsproblemet [1] [8].

Kan `när laddas ()` användas med tredjepartsbibliotek?

- Inget direkt stöd utanför vältaliga modeller: Eftersom `när laddad ()` förlitar sig på den vältaliga modellens interna tillstånd för att kontrollera om en relation laddas (`relationLoaded () '-metoden) är den i sig designad för vältaliga modeller och deras relationer. Tredjepartsbibliotek som inte sträcker sig eller efterliknar vältaliga modeller och deras relationsbelastningsmekanismer kan inte direkt använda `när laddas ()`.

-Lösningar: Om ett tredjepartsbibliotek returnerar objekt eller samlingar som inte är vältaliga modeller, kan du inte använda `när laddad ()` AS-IS. Du måste implementera liknande villkorade logik manuellt eller linda in dessa objekt i en anpassad resurs som efterliknar beteendet. Alternativt kan du manuellt kontrollera om de relaterade uppgifterna finns innan du inkluderar dem i svaret.

Sammanfattning

- `När laddad ()` är byggd för att arbeta uteslutande med vältaliga modeller och deras laddade relationer.
- Det beror på vältaliga interna relationslastningstillstånd, så det kan inte användas direkt med tredjepartsbibliotek som inte använder vältaliga modeller.
- För att villkorligt inkludera relaterade data från tredjepartskällor måste du implementera dina egna villkorade kontroller eller resursomslag.

Detta gör `när laddad ()` ett kraftfullt verktyg för att optimera Laravel API -svar men begränsat till det vältaliga ORM -sammanhanget [1] [7] [8].

Citeringar:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-in-laravel-api-resources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-with-whenloadeded
[3] https://laravel.com/docs/12.x/eloquent-resources
]
[5] https://www.youtube.com/watch?v=ls7m14ecasu
]
[7] https://laraveldaily.com/post/laravel-api-resources-relations-metods
[8] https://laravel-news.com/whenloaded