Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Gali būti naudojama () su trečiųjų šalių bibliotekomis arba tik su iškalbingais modeliais


Gali būti naudojama () su trečiųjų šalių bibliotekomis arba tik su iškalbingais modeliais


„Laravel“ metodas „Laravel“ yra specialiai sukurtas dirbti su iškalbingais modelio ryšiais. Tai sąlygiškai apima ryšių duomenis į API išteklių atsakymus tik tuo atveju, jei santykiai buvo nekantriai pakrauti į iškalbingą modelį. Šis metodas padeda išvengti nereikalingų duomenų bazių užklausų ir palaiko API atsakymus, tik įtraukiant susijusius duomenis, kai jie iš tikrųjų įkeliami.

naudojimo kontekstas, kai pakraunamas () ``

- iškalbingi modeliai ir santykiai: „Kai pakraunama ()„ Patikrinkite, ar iškalbingo modelio santykis buvo įkeltas naudojant tokius metodus kaip „su ()“ arba „load ()“. Jei santykiai įkeliami, jis grąžina susijusius duomenis; Priešingu atveju jis nieko negrąžina arba numatytoji vertė. Šis elgesys yra glaudžiai susijęs su „Eloquent“ vidiniu metodu „santykis ()“, kuris nustato, ar santykio duomenys yra prieinami modelio egzemplioriuje [1] [7] [8].

- API šaltiniai: Paprastai jis naudojamas „Laravel“ API išteklių klasėse, kad būtų sąlygiškai susiję ištekliai ar kolekcijos, atsižvelgiant į tai, ar santykiai buvo nekantriai pakrauti, pagerinti našumą ir vengti N+1 užklausos problemos [1] [8].

Ar galima „apkrauti ()` būti naudojamas su trečiųjų šalių bibliotekomis?

- Nėra tiesioginės paramos už iškalbingų modelių: kadangi „apkrovos ()„ apkrovos () „remiasi iškalbingo modelio vidine būsena, kad patikrintų, ar įkeliami santykiai („ santykiai “()„ metodas), jis iš prigimties yra skirtas iškalbingiems modeliams ir jų santykiams. Trečiųjų šalių bibliotekos, kurios neišplečia ar imituoja iškalbingus modelius, ir jų santykių įkėlimo mechanizmai negali tiesiogiai naudoti „apkrovos ()“.

-Sprendimai: jei trečiųjų šalių biblioteka grąžina objektus ar kolekcijas, kurie nėra iškalbingi modeliai, jūs negalite naudoti „krovinio ()` as-IS. Jums reikės įdiegti panašią sąlyginę logiką rankiniu būdu arba suvynioti tuos objektus į pasirinktinį šaltinį, kuris imituoja elgesį. Arba galite rankiniu būdu patikrinti, ar prieš įtraukdami atsakymą, prieš juos pateikiami susiję duomenys.

Santrauka

- „Kai pakrauta ()` yra sukurta dirbti tik su iškalbingais modeliais ir jų pakrautais santykiais.
- Tai priklauso nuo „Eloquent“ vidinio ryšio pakrovimo būsenos, todėl jos negalima tiesiogiai naudoti su trečiųjų šalių bibliotekomis, kurios nenaudoja iškalbingų modelių.
- Norėdami sąlygiškai įtraukti susijusius duomenis iš trečiųjų šalių šaltinių, turite atlikti savo sąlyginius patikrinimus ar išteklių įvyniojimus.

Tai daro „apkrovą ()„ galingas įrankis, skirtas optimizuoti „Laravel“ API atsakymus, tačiau apsiriboja iškalbingu ORM kontekstu [1] [7] [8].

Citatos:
[1] https://henestrosa.dev/blog/how-to-use-wenloaded-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-from-a-laravel-wenloaded-resource
[5] https://www.youtube.com/watch?v=LS7M14ECASU
[6] https://stackoverflow.com/questions/66675594/can-i-use-with-instead-load-laravel-lequent
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-methods
[8] https://laravel-news.com/whenloaded