Flutter
...
Data Objects
Pengelolaan Relasi Banyak ke Banyak di Flutter
11 mnt
hubungan banyak ke banyak di flutter pendahuluan 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 relations , yang merupakan yang tercepat dalam waktu pembuatan dan kueri kita akan menggunakan ini dalam panduan ini yang kedua adalah menggunakan arrays arrays dari pointers pointers yang dapat menyebabkan waktu kueri yang lambat tergantung pada ukuran mereka yang ketiga adalah menggunakan jointable jointable di mana ide berasal dari basis data klasik ketika ada hubungan banyak ke banyak, kita menggabungkan setiap objectid objectid atau pointer 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 hubungan banyak ke banyak pada aplikasi pendaftaran buku flutter menggunakan parse relations 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 prasyarat android studio https //developer android com/studio atau vs code terinstal (dengan plugin dart dan flutter) catatan aplikasi flutter yang dibuat dalam panduan sebelumnya selesaikan panduan sebelumnya agar anda dapat memiliki pemahaman yang lebih baik tentang hubungan satu ke banyak hubungan satu ke banyak kelas sebuah perangkat (atau perangkat virtual) yang menjalankan android atau ios 1 jalankan template aplikasi buku jika anda belum menyelesaikan panduan sebelumnya, anda dapat mengkloning dan menjalankan aplikasi buku flutter https //github com/templates back4app/flutter associations proyek dari repositori kami anda juga dapat melihat panduan sebelumnya https //www back4app com/docs/flutter/parse sdk/data objects/%7bsite baseurl%7d%7d//flutter/parse sdk/data objects/flutter one to many relationship untuk memahami template aplikasi dengan lebih baik di bawah ini anda dapat menemukan representasi visual dari model data pendaftaran buku 2 simpan objek buku dan penulisnya buka proyek flutter dari panduan sebelumnya hubungan satu ke banyak di flutter https //www back4app com/docs//flutter/parse sdk/data objects/flutter one to many relationship cari fungsi dosavebook dosavebook di file main dart main dart , dan ganti dengan kode di bawah ini di dalam future\<void> dosavebook() future\<void> dosavebook() fungsi di bawah fungsi ini akan membuat buku baru di penyimpanan data back4app dengan relasi 1 final book = parseobject('book') 2 set('title', controllertitle text trim()) 3 set('year', int parse(controlleryear text trim())) 4 //the objectid will be converted to a pointer on the save() method 5 set('genre', parseobject('genre') objectid = genre objectid) 6 //you can also convert to a pointer object before the saving using the topointer() method 7 set('publisher', 8 (parseobject('publisher') objectid = publisher objectid) topointer()) 9 //saving a list of authors for the book 10 addrelation( 11 'authors', 12 authors 13 map((o) => parseobject('author') objectid = o objectid) 14 tolist()); 15 16 await book save(); untuk membangun fungsi ini, ikuti langkah langkah berikut 1\ buat instance baru dari parse buku buku kelas dengan perintah parseobject('buku') parseobject('buku') 2 gunakan set set fungsi untuk mengatur bidang untuk objek ini 2 1 judul judul adalah atribut teks yang menerima nilai dari pengontrol teks 2 2 genre genre menerima nilai dengan mendefinisikan sebuah parseobject parseobject dengan objectid objectid dari genre genre ( parse akan mengonversi menjadi pointer saat disimpan ) 2 3 penerbit penerbit menerima nilai dengan mendefinisikan sebuah parseobject parseobject dengan objectid objectid dari penerbit penerbit ( perhatikan bahwa kita dapat menentukan untuk parse bahwa kita ingin menyimpan sebagai sebuah pointer pointer menggunakan topointer() topointer() metode ) 2 4 penulis penulis kami menyebut addrelation addrelation metode dari parseobject parseobject , mengirimkan daftar parseobject parseobject dengan objectid objectid dari penulis penulis }]} }]} 3 panggil simpan simpan fungsi di parseobject parseobject , yang akan secara efektif mendaftarkan objek ke database anda di back4app dashboard jalankan aplikasi dan uji dosavebook() dosavebook() fungsi pertama, akses dasbor dan hapus buku buku yang sebelumnya terdaftar dalam panduan sebelumnya klik pada tambahkan buku tambahkan buku tombol isi informasi buku dengan penulis klik pada simpan buku simpan buku tombol untuk mengonfirmasi bahwa objek baru disimpan di database dengan relasi, anda dapat mengakses back4app dashboard back4app dashboard dan mengakses buku 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 3 kuery detail buku dengan relasi 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 includeobject dalam contoh kami, kami ingin mengembalikan buku, dengan informasi dari genre dan penerbit cari fungsi getbookdetail getbookdetail di file main dart main dart , lalu ganti kode di bawah ini di dalam getbookdetail(parseobject book) getbookdetail(parseobject book) fungsi 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('objectid', book objectid) 4 includeobject(\['publisher', 'genre']); 5 6 final parseresponse responsebook = await querybook query(); 7 8 if (responsebook success && responsebook results != null) { 9 final book = (responsebook results first) as parseobject; 10 booktitle = book get\<string>('title'); 11 bookyear = book get\<int>('year'); 12 bookgenre = book get\<parseobject>('genre') get\<string>('name'); 13 bookpublisher = book get\<parseobject>('publisher') get\<string>('name'); 14 loadeddata = true; 15 } 16 17 querybuilder\<parseobject> queryauthors = 18 querybuilder\<parseobject>(parseobject('author')) 19 whererelatedto('authors', 'book', book objectid); 20 21 final parseresponse responseauthors = await queryauthors query(); 22 23 if (responseauthors success && responseauthors results != null) { 24 bookauthors = responseauthors results 25 map((e) => (e as parseobject) get\<string>('name')) 26 tolist(); 27 } untuk membangun fungsi ini, ikuti langkah langkah berikut buat sebuah instance dari parsequery parsequery objek untuk buku buku kelas masukkan kondisi dalam query, untuk mencari buku buku di mana objectid objectid field sama dengan objectid 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() query() metode jika operasi berhasil, objek dalam buku 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'); 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 dari parsequery parsequery objek untuk authors authors kelas masukkan kondisi dalam query, menggunakan whererelatedto whererelatedto operator untuk mencari authors authors hubungan dengan book book , di mana book book sama dengan objectid objectid dari buku yang dipilih lakukan metode pencarian query menggunakan query() query() metode jika operasi berhasil, objek dalam book book akan dikembalikan kami menggunakan metode get untuk mengambil data jalankan aplikasi dan uji query baru pertama, klik pada tombol list publisher/book list publisher/book pilih sebuah buku dari daftar layar berikutnya akan menampilkan data untuk buku buku dan hubungan mereka selesai! 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 flutter