Метод `при завантаженні ()` в Laravel спеціально розроблений для роботи з красномовними модельними взаємозв'язками. Він умовно включає дані відносин у відповіді на ресурси API лише в тому випадку, якщо взаємозв'язок нетерпляче завантажено на красномовну модель. Цей метод допомагає уникнути непотрібних запитів бази даних та зберігає відповіді API, лише включаючи відповідні дані, коли вони фактично завантажуються.
контекст використання `за допомогою ()`
- красномовні моделі та взаємозв'язки: `при завантаженні ()` перевіряє, чи взаємозв'язок красномовної моделі завантажується за допомогою таких методів, як `з ()` або `навантаженням ()`. Якщо відношення завантажується, він повертає відповідні дані; В іншому випадку він нічого не повертає або значення за замовчуванням. Така поведінка щільно поєднана з внутрішнім методом красномовства `` відношення завантажено () `, який визначає, чи дані співвідношення доступні в екземплярі моделі [1] [7] [8].
- Ресурси API: Він зазвичай використовується всередині класів ресурсів Laravel API для умовного включення суміжних ресурсів або колекцій, виходячи з того, чи були відносини, які прагнули завантажені, покращуючи ефективність та уникаючи проблеми запитів N+1 [1] [8].
може `під час завантаження ()` використовуватись із сторонніми бібліотеками?
- Немає прямої підтримки поза красномовними моделями: Оскільки `за допомогою завантаження ()` покладається на внутрішній стан красномовної моделі, щоб перевірити, чи завантажено взаємозв'язок (`` `метод ()` метод), він по суті розроблений для красномовних моделей та їх взаємозв'язків. Сторонні бібліотеки, які не розширюють або імітують красномовні моделі, і механізми завантаження їх відносин не можуть безпосередньо використовувати `за допомогою ()`.
-Вирішення: Якщо стороння бібліотека повертає об'єкти або колекції, які не є красномовними моделями, ви не можете використовувати `за завантаженням ()` as-is. Вам потрібно буде реалізувати подібну умовну логіку вручну або загорнути ці об'єкти у власний ресурс, який імітує поведінку. Крім того, ви можете вручну перевірити, чи є пов'язані дані перед тим, як включити їх у відповідь.
Резюме
- `При завантаженні ()` побудований для роботи виключно з красномовними моделями та їх навантаженими відносинами.
- Це залежить від стану завантаження внутрішніх відносин красномовності, тому його не можна використовувати безпосередньо з сторонніми бібліотеками, які не використовують красномовні моделі.
- Щоб умовно включити відповідні дані з сторонніх джерел, ви повинні реалізувати власні умовні перевірки або обгортки ресурсів.
Це робить "при завантаженні ()" потужним інструментом для оптимізації відповідей API Laravel, але обмежено красномовним контекстом ORM [1] [7] [8].
Цитати:
[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-whenload
[3] https://laravel.com/docs/12.x/eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-get--dingle-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-resources-relations-when-methods
[8] https://laravel-news.com/whenloaded