Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Dapatkah pemuatan digunakan dengan hubungan bersarang


Dapatkah pemuatan digunakan dengan hubungan bersarang


Ya, `loadmissing` dapat digunakan dengan hubungan bersarang di Laravel, tetapi ada beberapa nuansa yang harus diperhatikan.

Apa itu `loadmissing`?

Metode `loadmissing` dalam fasih Laravel digunakan untuk bersemangat memuat hanya jika mereka belum dimuat pada contoh model. Ini membantu menghindari kueri yang berlebihan dengan memeriksa apakah data hubungan sudah ada sebelum menanyakan database lagi [6].

Menggunakan `loadmissing` dengan hubungan bersarang

- Anda dapat menentukan hubungan bersarang dalam notasi titik dengan `loadmissing`, seperti` 'penulis.contacts'`, untuk memuat hubungan bersarang hanya jika hilang [7].
- Namun, ada perilaku yang diketahui di mana jika Anda `loadmissing` hubungan bersarang suatu hubungan yang sudah dimuat, Laravel dapat memuat ulang hubungan induk itu sendiri. Misalnya, jika Anda telah memuat `prasasti` pada model, maka memanggil` loadmissing ('prasasti.nestrelation') `akan menyebabkan hubungan` prasasti` untuk memuat ulang sepenuhnya [1].
- Ini berarti bahwa sementara `loadmissing` mendukung hubungan bersarang, ia dapat memicu pemuatan relasi perantara jika sebelumnya dimuat tetapi tanpa hubungan bersarang.

Pertimbangan Praktis

- `LoadMissing` berguna ketika Anda ingin hubungan beban yang bersemangat secara kondisional, mencegah kueri duplikat jika relasi sudah dimuat.
- Untuk hubungan bersarang, Anda harus menyadari bahwa memuat hubungan bersarang yang hilang dari hubungan induk yang sebelumnya dimuat dapat menyebabkan hubungan induk untuk memuat ulang, yang dapat memengaruhi kinerja.
- Jika Anda ingin menghindari pemuatan ulang seperti itu, Anda mungkin perlu mengelola dengan cermat kapan dan bagaimana Anda memuat hubungan bersarang atau mempertimbangkan dengan bersemangat memuatnya di muka dengan `dengan ()`.

Ringkasan

- Ya, `loadmissing` dapat digunakan dengan hubungan bersarang menggunakan notasi titik.
- Ini hanya memuat hubungan bersarang jika hilang.
- tetapi jika hubungan induk dimuat tanpa hubungan bersarang, `loadmissing` dapat memuat ulang hubungan induk untuk mengambil data bersarang [1] [6] [7].

Perilaku ini penting untuk diingat untuk menghindari banyak pertanyaan yang tidak terduga ketika bekerja dengan pemuatan bersarang di Laravel.

Kutipan:
[1] https://github.com/laravel/framework/issues/23027
[2] https://stackoverflow.com/questions/62563063/filtering-a-nest-relation-in-graphql
[3] https://compositecode.blog/2023/07/25/graphql-nested-queries-relationships-practices/
[4] https://github.com/fifemon/graphql-datasource/issues/15
[5] https://www.sea-ql.org/sea-orm-cookbook/001-how-to-load-nested-relation.html
[6] https://stackoverflow.com/questions/47238937/laravel-what-is-te-purpose-of-function-function-fungsi
[7] https://stackoverflow.com/questions/35490728/laravel-eloquent-eAger-loading-of-multiple-nest-relationships/53205641
[8] https://docs.sqlalchemy.org/14/orm/loading_relationships.html
[9] https://www.prisma.io/docs/orm/prisma-client/queries/relation-queries