Pengelolaan Relasi Banyak ke Banyak di Flutter
Dalam panduan sebelumnya, kita belajar bagaimana menggunakan hubungan satu ke banyak dan kita akan melanjutkan proyek kita. Dalam panduan ini, kita akan fokus pada hubungan yang paling umum: banyak ke banyak. Ada tiga cara untuk membuat hubungan banyak ke banyak di Parse.
- Yang pertama adalah menggunakan Parse Relations, yang merupakan yang tercepat dalam waktu pembuatan dan kueri. Kita akan menggunakan ini dalam panduan ini.
- Yang kedua adalah menggunakanArrays dari Pointers yang dapat menyebabkan waktu kueri yang lambat tergantung pada ukuran mereka.
- Yang ketiga adalah menggunakanJoinTable di mana ide berasal dari basis data klasik. Ketika ada hubungan banyak ke banyak, kita menggabungkan setiap objectId atau Pointer dari kedua sisi bersama-sama untuk membangun tabel terpisah baru di mana hubungan dilacak.
Dalam panduan ini Anda akan menerapkan sebuah hubungan banyak ke banyak pada Aplikasi Pendaftaran Buku Flutter menggunakan Parse Relations. Anda akan belajar bagaimana cara membuat dan mengkueri hubungan data banyak ke banyak dan bagaimana melakukan kueri yang mengembalikan data dari objek terkait, menggunakan Back4App dan Flutter SDK.
- Catatan: Aplikasi Flutter yang dibuat dalam panduan sebelumnya
- Selesaikan panduan sebelumnya agar Anda dapat memiliki pemahaman yang lebih baik tentang hubungan satu-ke-banyak kelas
- Sebuah perangkat (atau perangkat virtual) yang menjalankan Android atau iOS.
Jika Anda belum menyelesaikan panduan sebelumnya, Anda dapat mengkloning dan menjalankan Aplikasi Buku Flutter proyek dari repositori kami. Anda juga dapat melihat panduan sebelumnya untuk memahami template Aplikasi dengan lebih baik. Di bawah ini Anda dapat menemukan representasi visual dari model data Pendaftaran Buku.
Buka proyek Flutter dari panduan sebelumnya Hubungan Satu ke Banyak di Flutter. Cari fungsi doSaveBook di file main.dart, dan ganti dengan kode di bawah ini di dalam Future<void> doSaveBook() fungsi di bawah. Fungsi ini akan membuat Buku baru di penyimpanan data Back4app dengan relasi.
Untuk membangun fungsi ini, ikuti langkah-langkah berikut:
- 1. Buat instance baru dari ParseBuku kelas dengan perintah ParseObject('Buku').
- 2. Gunakan set fungsi untuk mengatur bidang untuk objek ini.
- 2.1.juduladalah atribut teks yang menerima nilai dari pengontrol teks.
- 2.2.genre menerima nilai dengan mendefinisikan sebuah ParseObject dengan objectId dari Genre. (Parse akan mengonversi menjadi pointer saat disimpan)
- 2.3.penerbit menerima nilai dengan mendefinisikan sebuah ParseObject dengan objectId dari Penerbit. (Perhatikan bahwa kita dapat menentukan untuk Parse bahwa kita ingin menyimpan sebagai sebuah pointer menggunakan toPointer() metode)
- 2.4.penulis. Kami menyebut addRelation metode dari ParseObject, mengirimkan daftar ParseObject dengan objectId dari Penulis.}]} }]}
- 3. Panggilsimpan fungsi di ParseObject, yang akan secara efektif mendaftarkan objek ke database Anda di Back4app Dashboard.
Jalankan Aplikasi dan uji doSaveBook() fungsi
- Pertama, akses dasbor dan hapus buku-buku yang sebelumnya terdaftar dalam panduan sebelumnya.
- Klik pada Tambahkan Buku tombol.
- Isi informasi buku dengan Penulis.
- Klik pada Simpan Buku tombol
Untuk mengonfirmasi bahwa objek baru disimpan di database dengan relasi, Anda dapat mengakses Back4app Dashboard dan mengakses Buku kelas.
Mengklik pada nilai pointer/relasi objek di dasbor Anda akan membawa Anda ke entri objek yang dirujuk. Ini mungkin tampak seperti fitur yang tidak berbahaya, tetapi ini membuat debugging dan pelacakan kesalahan jauh lebih cepat daripada mencarinya secara manual.
Fungsi ini akan mengkueri Detail Buku di database Back4app, mengembalikan data relasi. Dalam beberapa situasi, Anda ingin mengembalikan beberapa jenis objek terkait dalam satu kueri. Anda dapat melakukan ini dengan metode includeObject . Dalam contoh kami, kami ingin mengembalikan buku, dengan informasi dari Genre dan Penerbit.
Cari fungsi getBookDetail di file main.dart, lalu ganti kode di bawah ini di dalam getBookDetail(ParseObject book) fungsi:
Untuk membangun fungsi ini, ikuti langkah-langkah berikut:
- Buat sebuah instance dariParseQuery objek untuk Buku kelas. Masukkan kondisi dalam query, untuk mencari Buku di mana objectId field sama dengan objectId dari buku yang dipilih.
- Kami menggunakan metode includeObject, memberitahukan field dari pointer yang ingin kami kembalikan datanya dalam query yang sama: Genre dan Penerbit. Anda juga dapat melakukan includeObject multi level menggunakan notasi titik. Contoh: `..includeObject([‘post’, ‘post.authors’]);
- Lakukan metode pencarian Query menggunakan query() metode.
- Jika operasi berhasil, objek dalam Buku akan dikembalikan.
- Kami menggunakan metode get untuk mengambil data. Untuk field yang merupakan pointer, kami terlebih dahulu perlu mengambil pointer tersebut, kemudian mendapatkan datanya. Contoh:bookGenre = book.get<ParseObject>('genre').get<String>('name');
Pada tahap kedua pemrosesan, kami perlu memulihkan Penulis yang terkait dengan Buku.
Untuk membangun fungsi ini, ikuti langkah-langkah berikut:
- Buat sebuah instance dariParseQuery objek untuk Authors kelas. Masukkan kondisi dalam query, menggunakan whereRelatedTo operator untuk mencari Authors hubungan dengan Book, di mana Book sama dengan objectId dari buku yang dipilih.
- Lakukan metode pencarian Query menggunakan query() metode.
- Jika operasi berhasil, objek dalam Book akan dikembalikan.
- Kami menggunakan metode get untuk mengambil data.
Jalankan Aplikasi dan uji Query baru.
Pertama, klik pada tombol List Publisher/Book.
Pilih sebuah buku dari daftar. Layar berikutnya akan menampilkan data untuk buku-buku dan hubungan mereka.
Pada titik ini, Anda telah belajar bagaimana cara membuat dan melakukan query pada hubungan banyak-ke-banyak dan bagaimana cara melakukan query yang mengembalikan data dari objek terkait di Parse pada Flutter.