Metode `whenloaded ()` dalam Laravel dirancang khusus untuk bekerja dengan hubungan model yang fasih. Ini secara kondisional mencakup data hubungan dalam respons sumber daya API hanya jika hubungan telah dimuat pada model yang fasih. Metode ini membantu menghindari kueri basis data yang tidak perlu dan membuat respons API hanya bersandar hanya termasuk data terkait ketika benar -benar dimuat.
Konteks penggunaan `whenloaded ()`
- Model dan hubungan yang fasih: `whenloaded ()` memeriksa jika hubungan pada model yang fasih telah dimuat menggunakan metode seperti `dengan ()` atau `load ()`. Jika hubungan dimuat, ia mengembalikan data terkait; Kalau tidak, ia tidak mengembalikan apa pun atau nilai default. Perilaku ini secara ketat digabungkan dengan metode internal fasih `relationalloaded ()` yang menentukan apakah data hubungan tersedia pada contoh model [1] [7] [8].
- Sumber Daya API: Biasanya digunakan di dalam kelas sumber daya Laravel API untuk secara kondisional memasukkan sumber daya atau koleksi terkait berdasarkan apakah hubungan itu bersemangat dimuat, meningkatkan kinerja dan menghindari masalah permintaan n+1 [1] [8].
Can `whenloaded ()` digunakan dengan perpustakaan pihak ketiga?
- Tidak ada dukungan langsung di luar model fasih: karena `whenloaded ()` bergantung pada keadaan internal model yang fasih untuk memeriksa apakah suatu hubungan dimuat (`relationalloaded ()` metode), secara inheren dirancang untuk model yang fasih dan hubungan mereka. Perpustakaan pihak ketiga yang tidak memperluas atau meniru model fasih dan mekanisme pemuatan hubungan mereka tidak dapat secara langsung menggunakan `whenloaded ()`.
-Penanganan Solusi: Jika perpustakaan pihak ketiga mengembalikan objek atau koleksi yang bukan model yang fasih, Anda tidak dapat menggunakan `whenloaded ()` AS-is. Anda perlu menerapkan logika bersyarat yang serupa secara manual atau membungkus objek -objek tersebut dalam sumber daya khusus yang meniru perilaku tersebut. Atau, Anda dapat memeriksa secara manual apakah data terkait hadir sebelum memasukkannya ke dalam respons.
Ringkasan
- `whenloaded ()` dibangun untuk bekerja secara eksklusif dengan model yang fasih dan hubungannya yang dimuat.
- Itu tergantung pada keadaan pemuatan hubungan internal yang fasih, sehingga tidak dapat digunakan secara langsung dengan pustaka pihak ketiga yang tidak menggunakan model yang fasih.
- Untuk memasukkan data terkait secara kondisional dari sumber pihak ketiga, Anda harus mengimplementasikan pemeriksaan bersyarat atau pembungkus sumber daya.
Ini membuat `whenloaded ()` alat yang kuat untuk mengoptimalkan respons Laravel API tetapi terbatas pada konteks ORM yang fasih [1] [7] [8].
Kutipan:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-in-laravel-api-sources
[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-get-single-field-from-a-laravel-whenloaded-uSource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
[6] https://stackoverflow.com/Questions/6675594/can--iuse-with-instead-load-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-methods
[8] https://laravel-news.com/whenloaded