Metoda `Wher Deaded () v Laravelu je zasnovana posebej za delo z zgovornimi odnosi modela. Pogojno vključuje podatke o odnosih v odzivih na vire API le, če je bil odnos željen na zgovornem modelu. Ta metoda pomaga preprečiti nepotrebne poizvedbe baze podatkov in ohranja vitke odzive API -ja, če je dejansko naložena le povezane podatke.
kontekst uporabe `wherloded ()`
- zgovorni modeli in odnosi: `Ko naloži ()` preveri, ali je bil odnos na zgovorni model naložen po metodah, kot so `z ()` ali `load ()`. Če je razmerje naloženo, vrne povezane podatke; V nasprotnem primeru ne vrne ničesar ali privzete vrednosti. To vedenje je tesno povezano z Eloquentovo notranjo metodo `relativno naloženo ()`, ki določa, ali so podatki o razmerju na voljo v primerku modela [1] [7] [8].
- Viri API: Običajno se uporablja znotraj razredov virov Laravel API, da se pogojno vključuje povezane vire ali zbirke glede na to, ali so bili odnosi željni obremenjeni, izboljšajo uspešnost in se izognili problemu poizvedbe N+1 [1] [8].
Ali se lahko `whered ()` uporabljate s knjižnicami tretjih oseb?
- Brez neposredne podpore zunaj zgovornih modelov: Ker se `When Deaded ()` zanaša na notranje stanje zgovornika modela, da preveri, ali je razmerje naloženo (`metoda relationsded ()`), je sam po sebi zasnovan za zgovorne modele in njihove odnose. Knjižnice tretjih oseb, ki ne razširjajo in ne posnemajo zgovorni modelov in njihovih mehanizmov za nalaganje odnosov, ne morejo neposredno uporabljati `, kadar je naloženo ()`.
-Reševanje: Če knjižnica tretjih oseb vrne predmete ali zbirke, ki niso zgovorni modeli, ne morete uporabljati `When Deaded ()` as-is. Morali bi ročno izvajati podobno pogojno logiko ali te predmete zaviti v vir po meri, ki posnema vedenje. Lahko pa ročno preverite, ali so povezani podatki prisotni, preden jih vključijo v odgovor.
Povzetek
- `ko je naloženo ()` izdelano tako, da deluje izključno z zgovornimi modeli in njihovimi obremenjenimi odnosi.
- Odvisno je od stanja nalaganja notranjega odnosa z eloquentom, zato ga ni mogoče uporabiti neposredno s knjižnicami drugih proizvajalcev, ki ne uporabljajo zgovornih modelov.
- Če želite pogojno vključevati povezane podatke iz tretjih virov, morate implementirati svoje pogojne preglede ali ovojne vire.
Zaradi tega je "When Deaded ()" močno orodje za optimizacijo odzivov Laravel API, vendar je omejeno na zgovorni ORM kontekst [1] [7] [8].
Navedbe:
[1] https://henestrosa.dev/blog/how-to-use-whenload-in-lavel-api-resource
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-with-wenaded
[3] https://laravel.com/docs/12.x/eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-get-a-single-field-from-a-lavel-wenaded-resource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
[6] https://stackoverflow.com/questions/6675594/can-i-use-with-instead-load-lavel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-Methods
[8] https://laravel-news.com/whenled