Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kan wanneer geladen () worden gebruikt met bibliotheken van derden of alleen met welsprekende modellen


Kan wanneer geladen () worden gebruikt met bibliotheken van derden of alleen met welsprekende modellen


De methode `Whenloaded ()` in Laravel is specifiek ontworpen om te werken met welsprekende modelrelaties. Het bevat voorwaardelijk relatiegegevens in API -resource -reacties alleen als de relatie enthousiast is geladen op het welsprekende model. Deze methode helpt onnodige databasevragen te voorkomen en houdt API -reacties door alleen door gerelateerde gegevens op te nemen wanneer deze daadwerkelijk worden geladen.

Gebruikscontext van `Whenloaded ()`

- Eloquente modellen en relaties: `Whenloaded ()` Controleert of een relatie op een welsprekend model is geladen met methoden zoals `met ()` of `load ()`. Als de relatie wordt geladen, retourneert deze de gerelateerde gegevens; Anders retourneert het niets of een standaardwaarde. Dit gedrag is strak gekoppeld aan de interne methode van Eloquent `RelationLoaded ()` die bepaalt of de relatiegegevens beschikbaar zijn in de modelinstantie [1] [7] [8].

- API -bronnen: het wordt vaak gebruikt in Laravel API -resource -klassen om voorwaardelijk gerelateerde bronnen of collecties op te nemen op basis van of de relaties enthousiast waren geladen, de prestaties verbeteren en het N+1 -queryprobleem vermijden [1] [8].

kan `wanneer geladen ()` worden gebruikt met bibliotheken van derden?

- Geen directe ondersteuning buiten Eloquent -modellen: aangezien `WhenLoaded ()` afhankelijk is van de interne status van het welsprekende model om te controleren of een relatie wordt geladen (`RelationLoaded ()` methode), is deze inherent ontworpen voor welsprekende modellen en hun relaties. Bibliotheken van derden die geen welsprekende modellen uitbreiden of nabootsen en hun relatielaadmechanismen kunnen niet direct `wanneer geladen ()` gebruiken.

-Tijdelijke oplossingen: als een bibliotheek van derden objecten of collecties retourneert die geen welsprekende modellen zijn, kunt u niet gebruiken `wanneer geladen ()` as-is. U zou vergelijkbare voorwaardelijke logica handmatig moeten implementeren of die objecten in een aangepaste bron verpakken die het gedrag nabootst. Als alternatief kunt u handmatig controleren of de gerelateerde gegevens aanwezig zijn voordat u deze in de reactie opneemt.

Samenvatting

- `Whenloaded ()` is gebouwd om uitsluitend te werken met welsprekende modellen en hun geladen relaties.
- Het hangt af van de interne relatietoestand van Eloquent, dus het kan niet rechtstreeks worden gebruikt met bibliotheken van derden die geen welsprekende modellen gebruiken.
- Om voorwaardelijk gerelateerde gegevens van bronnen van derden op te nemen, moet u uw eigen voorwaardelijke controles of bronnenverpakkingen implementeren.

Dit maakt `WhoLoaded ()` een krachtig hulpmiddel voor het optimaliseren van Laravel API -reacties maar beperkt tot de welsprekende ORM -context [1] [7] [8].

Citaten:
[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-when
[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-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-reesources-relations-when-methoden
[8] https://laravel-news.com/whenloaded