Flutter
...
Data Objects
สร้างและจัดการความสัมพันธ์หลายต่อหลายบน Flutter โดยใช้ Parse SDK
10 นาที
ความสัมพันธ์แบบหลายต่อหลายใน flutter บทนำ ในคู่มือก่อนหน้านี้ เราได้เรียนรู้วิธีการใช้ความสัมพันธ์แบบหนึ่งต่อหลาย และเราจะดำเนินการต่อในโปรเจกต์ของเรา ในคู่มือนี้ เราจะมุ่งเน้นไปที่ความสัมพันธ์ที่พบบ่อยที่สุด หลายต่อหลาย มีสามวิธีในการสร้างความสัมพันธ์แบบหลายต่อหลายใน parse วิธีแรกคือการใช้ parse ความสัมพันธ์ ความสัมพันธ์ , ซึ่งเป็นวิธีที่เร็วที่สุดในการสร้างและค้นหา เราจะใช้สิ่งนี้ในคู่มือนี้ วิธีที่สองคือการใช้ อาร์เรย์ อาร์เรย์ ของ พอยเตอร์ พอยเตอร์ ซึ่งอาจทำให้เวลาค้นหาช้า ขึ้นอยู่กับขนาดของมัน วิธีที่สามคือการใช้ jointable jointable ซึ่งมีแนวคิดมาจากฐานข้อมูลคลาสสิก เมื่อมีความสัมพันธ์แบบหลายต่อหลาย เราจะรวมทุก objectid objectid หรือ พอยเตอร์ พอยเตอร์ จากทั้งสองด้านมารวมกันเพื่อสร้างตารางแยกใหม่ซึ่งความสัมพันธ์จะถูกติดตาม ในคู่มือนี้คุณจะดำเนินการสร้าง ความสัมพันธ์แบบหลายต่อหลาย ความสัมพันธ์แบบหลายต่อหลาย ในแอปลงทะเบียนหนังสือ flutter โดยใช้ parse ความสัมพันธ์ ความสัมพันธ์ คุณจะได้เรียนรู้วิธีการสร้างและค้นหาความสัมพันธ์ข้อมูลแบบหลายต่อหลาย และวิธีการดำเนินการค้นหาที่ส่งคืนข้อมูลจากวัตถุที่เกี่ยวข้อง โดยใช้ back4app และ flutter sdk ข้อกำหนดเบื้องต้น https //developer android com/studio หรือ https //code visualstudio com/ (พร้อมกับ https //docs flutter dev/get started/editor dart และ flutter) หมายเหตุ แอป flutter ที่สร้างขึ้นในคู่มือก่อนหน้า ทำตามคู่มือก่อนหน้าเพื่อให้คุณเข้าใจเกี่ยวกับ ความสัมพันธ์แบบหนึ่งต่อหลาย ความสัมพันธ์แบบหนึ่งต่อหลาย คลาส อุปกรณ์ (หรืออุปกรณ์เสมือน) ที่รัน android หรือ ios 1 รันเทมเพลตแอปหนังสือ หากคุณยังไม่ได้ทำตามคู่มือก่อนหน้า คุณสามารถโคลนและรัน https //github com/templates back4app/flutter associations โครงการจากที่เก็บของเรา คุณยังสามารถดูที่ https //www back4app com/docs/flutter/parse sdk/data objects/%7bsite baseurl%7d%7d//flutter/parse sdk/data objects/flutter one to many relationship เพื่อให้เข้าใจเทมเพลตแอปได้ดีขึ้น ด้านล่างคุณสามารถดูการแสดงภาพของโมเดลข้อมูลการลงทะเบียนหนังสือ 2 บันทึกวัตถุหนังสือและผู้เขียนของมัน เปิดโปรเจกต์ flutter จากคู่มือก่อนหน้า https //www back4app com/docs//flutter/parse sdk/data objects/flutter one to many relationship ค้นหาฟังก์ชัน dosavebook dosavebook ในไฟล์ main dart main dart , และแทนที่ด้วยโค้ดด้านล่างภายใน future\<void> dosavebook() future\<void> dosavebook() ฟังก์ชันด้านล่าง ฟังก์ชันนี้จะสร้างหนังสือใหม่ใน back4app data store พร้อมความสัมพันธ์ 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(); ในการสร้างฟังก์ชันนี้ ให้ทำตามขั้นตอนเหล่านี้ 1\ สร้างอินสแตนซ์ใหม่ของ parse book book คลาสด้วยคำสั่ง parseobject('book') parseobject('book') 2 ใช้ ชุด ชุด ฟังก์ชันเพื่อตั้งค่าฟิลด์สำหรับวัตถุนี้ 2 1 ชื่อเรื่อง ชื่อเรื่อง เป็นคุณสมบัติของข้อความที่รับค่าจากตัวควบคุมข้อความ 2 2 ประเภท ประเภท รับค่าด้วยการกำหนด parseobject parseobject ด้วย objectid objectid ของ ประเภท ประเภท ( parse จะเปลี่ยนเป็น pointer เมื่อบันทึก ) 2 3 ผู้จัดพิมพ์ ผู้จัดพิมพ์ ได้รับค่าด้วยการกำหนด parseobject parseobject ด้วย objectid objectid ของ ผู้จัดพิมพ์ ผู้จัดพิมพ์ ( โปรดทราบว่าเราสามารถระบุให้ parse ว่าเราต้องการบันทึกเป็น pointer pointer โดยใช้ topointer() topointer() วิธีการ ) 2 4 ผู้เขียน ผู้เขียน เราเรียก addrelation addrelation วิธีการของ parseobject parseobject , ส่งรายการของ parseobject parseobject พร้อมกับ objectid objectid ของ ผู้เขียน ผู้เขียน ที่เลือก 3 เรียกใช้ บันทึก บันทึก ฟังก์ชันใน parseobject parseobject , ซึ่งจะลงทะเบียนวัตถุในฐานข้อมูลของคุณใน back4app dashboard อย่างมีประสิทธิภาพ เรียกใช้แอปและทดสอบฟังก์ชันใหม่ dosavebook() dosavebook() ก่อนอื่น ให้เข้าถึงแดชบอร์ดและลบหนังสือที่ลงทะเบียนไว้ก่อนหน้านี้ในคู่มือก่อนหน้า คลิกที่ เพิ่มหนังสือ เพิ่มหนังสือ ปุ่ม กรอกข้อมูลหนังสือพร้อมผู้เขียน คลิกที่ บันทึกหนังสือ บันทึกหนังสือ ปุ่ม เพื่อยืนยันว่าอ็อบเจ็กต์ใหม่ถูกบันทึกในฐานข้อมูลพร้อมความสัมพันธ์ คุณสามารถเข้าถึง back4app dashboard back4app dashboard และเข้าถึง book book คลาส การคลิกที่ค่าชี้วัด/ความสัมพันธ์ของอ็อบเจ็กต์ในแดชบอร์ดของคุณจะพาคุณไปยังรายการอ็อบเจ็กต์ที่อ้างอิง อาจดูเหมือนฟีเจอร์ที่ไม่เป็นอันตราย แต่สิ่งนี้ทำให้การดีบักและการติดตามข้อผิดพลาดรวดเร็วกว่าการค้นหามันด้วยตนเองมาก 3 สอบถามรายละเอียดหนังสือพร้อมความสัมพันธ์ ฟังก์ชันนี้จะสอบถามรายละเอียดหนังสือในฐานข้อมูล back4app โดยส่งคืนข้อมูลความสัมพันธ์ ในบางสถานการณ์ คุณอาจต้องการส่งคืนอ็อบเจ็กต์ที่เกี่ยวข้องหลายประเภทในคำถามเดียว คุณสามารถทำได้ด้วย includeobject includeobject วิธีการ ในตัวอย่างของเรา เราต้องการส่งคืนหนังสือพร้อมข้อมูลจากประเภทและผู้จัดพิมพ์ ค้นหาฟังก์ชัน getbookdetail getbookdetail ในไฟล์ main dart main dart , จากนั้นแทนที่โค้ดด้านล่างภายใน getbookdetail(parseobject book) getbookdetail(parseobject book) ฟังก์ชัน 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 } ในการสร้างฟังก์ชันนี้ ให้ทำตามขั้นตอนเหล่านี้ สร้างอินสแตนซ์ของ parsequery parsequery อ็อบเจ็กต์สำหรับ book book คลาส ใส่เงื่อนไขในคำค้นเพื่อค้นหา books books ที่ objectid objectid ฟิลด์เท่ากับ objectid objectid ของหนังสือที่เลือก เราใช้เมธอด includeobject โดยแจ้งฟิลด์ของพอยน์เตอร์ที่เราต้องการให้ส่งคืนข้อมูลในคำค้นเดียว ประเภทและผู้จัดพิมพ์ คุณยังสามารถทำการ includeobject หลายระดับโดยใช้การเขียนแบบจุด ตัวอย่าง ` includeobject(\[‘post’, ‘post authors’]); ทำการค้นหาของ query โดยใช้ query() query() เมธอด หากการดำเนินการสำเร็จ อ็อบเจ็กต์ใน book book จะถูกส่งคืน เราใช้เมธอด get เพื่อดึงข้อมูล สำหรับฟิลด์ที่เป็นพอยน์เตอร์ เราจะต้องดึงพอยน์เตอร์ก่อน จากนั้นจึงได้รับข้อมูล ตัวอย่าง bookgenre = book get\<parseobject>('genre') get\<string>('name'); bookgenre = book get\<parseobject>('genre') get\<string>('name'); ในขั้นตอนที่สองของการประมวลผล เราจำเป็นต้องกู้คืนผู้เขียนที่เกี่ยวข้องกับหนังสือ ในการสร้างฟังก์ชันนี้ ให้ทำตามขั้นตอนเหล่านี้ สร้างอินสแตนซ์ของ parsequery parsequery อ็อบเจ็กต์สำหรับ authors authors คลาส ใส่เงื่อนไขในคำค้น โดยใช้ whererelatedto whererelatedto ตัวดำเนินการเพื่อค้นหา authors authors ความสัมพันธ์กับ book book , โดยที่ book book เท่ากับ objectid objectid ของหนังสือที่เลือก ทำการค้นหาด้วยวิธีการของ query โดยใช้ query() query() วิธีการ หากการดำเนินการสำเร็จ อ็อบเจ็กต์ใน book book จะถูกส่งกลับ เราใช้วิธี get เพื่อดึงข้อมูล เรียกใช้แอปและทดสอบการค้นหาใหม่ ก่อนอื่น คลิกที่ list publisher/book list publisher/book ปุ่ม เลือกหนังสือจากรายการ หน้าถัดไปจะแสดงข้อมูลสำหรับหนังสือและความสัมพันธ์ของพวกเขา เสร็จสิ้น! ในจุดนี้ คุณได้เรียนรู้วิธีการสร้างและค้นหาความสัมพันธ์แบบหลายต่อหลาย และวิธีการดำเนินการค้นหาที่ส่งคืนข้อมูลจากอ็อบเจ็กต์ที่เกี่ยวข้องใน parse บน flutter flutter