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