A Laravel -ben a „Whiled ()” módszert kifejezetten az ékesszóló modellkapcsolatokkal való együttműködésre tervezték. Feltételesen csak akkor tartalmazza a kapcsolati adatokat az API -erőforrások válaszaiban, ha a kapcsolat lelkesen töltötte be az ékesszóló modellt. Ez a módszer segít elkerülni a felesleges adatbázis -lekérdezéseket, és az API -válaszok hajlítását csak azáltal, hogy a kapcsolódó adatokat beillesztik, ha ténylegesen betöltik.
A „WHODED ()” használatának kontextusa
- ékesszóló modellek és kapcsolatok: `amikor ()` ellenőrzi, hogy egy ékesszóló modell kapcsolatát betöltötték -e olyan módszerekkel, mint a () `vagy a` load () `segítségével. Ha a kapcsolat betöltődik, akkor visszaadja a kapcsolódó adatokat; Ellenkező esetben semmit sem ad vissza, sem alapértelmezett értéket. Ez a viselkedés szorosan kapcsolódik az ékesszóló belső módszeréhez, a „relevaded ()” módszerrel, amely meghatározza, hogy a kapcsolati adatok rendelkezésre állnak -e a modellpéldányon [1] [7] [8].
- API források: A Laravel API erőforrás -osztályaiban általában használják a kapcsolódó erőforrásokat vagy gyűjteményeket annak alapján, hogy a kapcsolatok lelkesen voltak -e betöltve, javítva a teljesítményt és elkerülve az N+1 lekérdezési problémát [1] [8].
Használható-e a „WHODED ()” harmadik fél könyvtárakkal?
- Nincs közvetlen támogatás az ékesszóló modelleken kívül: Mivel a „Whiled ()” az ékesszóló modell belső állapotára támaszkodik, hogy ellenőrizze, hogy a kapcsolat betöltött -e (`reloaded ()` módszer), az eredendően az ékesszóló modellekhez és azok kapcsolatához tervezték. Harmadik fél könyvtárak, amelyek nem terjesztik ki vagy nem utánozzák az ékesszóló modelleket, és a kapcsolati betöltési mechanizmusok nem használhatják közvetlenül a „Whened ()” használatát.
-Megkeresések: Ha egy harmadik fél könyvtár olyan objektumokat vagy gyűjteményeket ad vissza, amelyek nem ékesszóló modellek, akkor nem használhatja a „Whiled ()` as-is-t. A hasonló feltételes logikát manuálisan kell végrehajtania, vagy be kell tekernie ezeket az objektumokat egy olyan egyedi erőforrásba, amely utánozza a viselkedést. Alternatív megoldásként manuálisan ellenőrizheti, hogy a kapcsolódó adatok vannak -e, mielőtt a válaszba belefoglalnák.
Összegzés
- A „Whiled ()” úgy épül fel, hogy kizárólag ékesszóló modellekkel és betöltött kapcsolatokkal dolgozzon.
- Ez az ékesszóló belső kapcsolati betöltési állapotától függ, tehát nem használható közvetlenül harmadik fél könyvtárakkal, amelyek nem használnak ékesszóló modelleket.
- A harmadik fél forrásainak kapcsolódó adatainak feltételes beillesztéséhez be kell hajtania a saját feltételes ellenőrzéseit vagy az erőforrás-csomagolókat.
Ez teszi a „Töltse fel ()” hatékony eszközt a Laravel API válaszok optimalizálására, de az ékesszóló ORM kontextusra korlátozódik [1] [7] [8].
Idézetek:
[1] https://henestrosa.dev/blog/how-touse-whenloaded-in-laravel-api-resources
[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-a-laravel-whenloaded-resource
[5] https://www.youtube.com/watch?v=LS7M14ecasu
[6] https://stackoverflow.com/questions/66675594/can-uuse-with-instead-load-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-fellations-hen-methods
[8] https://laravel-news.com/whenloaded