Flutter
...
Data Objects
Flutter: N:N-Beziehungen mit Parse SDK umsetzen
11 min
viele zu viele beziehung in flutter einführung im vorherigen leitfaden haben wir gelernt, wie man eins zu viele beziehungen verwendet, und wir werden mit unserem projekt fortfahren in diesem leitfaden konzentrieren wir uns auf die häufigste beziehung viele zu viele es gibt drei möglichkeiten, eine viele zu viele beziehung in parse zu erstellen die erste besteht darin, die parse beziehungen beziehungen , die am schnellsten in der erstellung und abfragezeit ist wir werden dies in diesem leitfaden verwenden die zweite besteht darin, arrays arrays von zeigern zeigern zu verwenden, was je nach größe zu langsamen abfragezeiten führen kann die dritte besteht darin, jointable jointable zu verwenden, wo die idee aus klassischen datenbanken stammt wenn es eine viele zu viele beziehung gibt, kombinieren wir jede objectid objectid oder zeiger zeiger von beiden seiten, um eine neue separate tabelle zu erstellen, in der die beziehung verfolgt wird in diesem leitfaden werden sie eine viele zu viele viele zu viele beziehung in einer flutter buchregistrierungs app unter verwendung der parse beziehungen beziehungen sie werden lernen, wie man viele zu viele datenbeziehungen erstellt und abfragt und wie man abfragen durchführt, die daten von verwandten objekten zurückgeben, unter verwendung von back4app und dem flutter sdk voraussetzungen android studio https //developer android com/studio oder vs code installiert (mit plugins dart und flutter) hinweis die flutter app, die im vorherigen leitfaden erstellt wurde vervollständigen sie den vorherigen leitfaden, damit sie ein besseres verständnis für die eins zu viele beziehung eins zu viele beziehung klasse haben ein gerät (oder virtuelles gerät), das android oder ios ausführt 1 führen sie die buch app vorlage aus wenn sie den vorherigen leitfaden nicht abgeschlossen haben, können sie das vollständige buch flutter app https //github com/templates back4app/flutter associations projekt aus unserem repository klonen und ausführen sie können auch einen blick auf den vorherigen leitfaden https //www back4app com/docs/flutter/parse sdk/data objects/%7bsite baseurl%7d%7d//flutter/parse sdk/data objects/flutter one to many relationship werfen, um die app vorlage besser zu verstehen unten finden sie eine visuelle darstellung des datenmodells zur buchregistrierung 2 speichern sie ein buchobjekt und dessen autor öffnen sie das flutter projekt aus dem vorherigen leitfaden eins zu viele beziehungen in flutter https //www back4app com/docs//flutter/parse sdk/data objects/flutter one to many relationship suchen sie die funktion dosavebook dosavebook in der datei main dart main dart , und ersetzen sie sie durch den folgenden code innerhalb der future\<void> dosavebook() future\<void> dosavebook() funktion unten diese funktion erstellt ein neues buch im back4app datenspeicher mit beziehungen 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(); um diese funktion zu erstellen, befolgen sie diese schritte 1\ erstellen sie eine neue instanz der parse buch buch klasse mit dem befehl parseobject('buch') parseobject('buch') 2 verwenden sie die set set funktion, um die felder für dieses objekt festzulegen 2 1 titel titel ist ein textattribut, das einen wert vom textcontroller erhält 2 2 genre genre erhält den wert, indem ein parseobject parseobject mit dem objectid objectid des ausgewählten genres genres ( parse wird beim speichern in einen zeiger umwandeln ) 2 3 verleger verleger erhält den wert, indem er ein parseobject parseobject mit der objectid objectid des ausgewählten verleger verleger ( beachten sie, dass wir für parse angeben können, dass wir als zeiger zeiger speichern möchten, indem wir die topointer() topointer() methode verwenden ) 2 4 autoren autoren wir nennen die addrelation addrelation methode von parseobject parseobject , eine liste von parseobject parseobject mit der objectid objectid der ausgewählten autoren autoren 3 call the save save function in parseobject parseobject , which will effectively register the object to your database in the back4app dashboard führen sie die app aus und testen sie die neue dosavebook() dosavebook() funktion zuerst greifen sie auf das dashboard zu und löschen die bücher, die im vorherigen leitfaden registriert wurden klicken sie auf den buch hinzufügen buch hinzufügen button füllen sie die buchinformationen mit autoren aus klicken sie auf buch speichern buch speichern button um zu bestätigen, dass das neue objekt mit beziehungen in der datenbank gespeichert ist, können sie auf das back4app dashboard back4app dashboard zugreifen und die buch buch klasse aufrufen ein klick auf den objektzeiger/beziehungswert in ihrem dashboard führt sie zum referenzierten objekteintrag es mag wie eine harmlose funktion erscheinen, aber dies macht das debuggen und die fehlersuche viel schneller, als es manuell zu suchen 3 abfrage der buchdetails mit beziehungen diese funktion wird die buchdetails in der back4app datenbank abfragen und beziehungsdaten zurückgeben in einigen situationen möchten sie mehrere arten von verwandten objekten in einer abfrage zurückgeben sie können dies mit der includeobject includeobject methode tun in unserem beispiel möchten wir die bücher mit informationen aus genre und verlagen zurückgeben suchen sie nach der funktion getbookdetail getbookdetail in der datei main dart main dart , ersetzen sie dann den folgenden code innerhalb der getbookdetail(parseobject book) getbookdetail(parseobject book) funktion 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 } um diese funktion zu erstellen, befolgen sie diese schritte erstellen sie eine instanz von parsequery parsequery objekt für buch buch klasse fügen sie eine bedingung in die abfrage ein, um bücher bücher zu suchen, wo objectid objectid feld gleich objectid objectid des ausgewählten buches ist wir verwenden die includeobject methode und informieren über die felder der zeiger, deren daten wir in derselben abfrage zurückgeben möchten genre und verlag sie können auch mehrstufige includeobject mit punktnotation durchführen beispiel ` includeobject(\[‘post’, ‘post authors’]); führen sie die suchmethode einer abfrage mit der query() query() methode aus wenn die operationen erfolgreich sind, wird das objekt in buch buch zurückgegeben wir verwenden die get methode, um die daten abzurufen für felder, die zeiger sind, müssen wir zuerst den zeiger abrufen und dann seine daten erhalten beispiel bookgenre = book get\<parseobject>('genre') get\<string>('name'); bookgenre = book get\<parseobject>('genre') get\<string>('name'); im zweiten verarbeitungsstadium müssen wir die autoren abrufen, die mit dem buch verbunden sind um diese funktion zu erstellen, befolgen sie diese schritte erstellen sie eine instanz von parsequery parsequery objekt für die authors authors klasse fügen sie eine bedingung in die abfrage ein, indem sie den whererelatedto whererelatedto operator verwenden, um die authors authors beziehung zu book book , wo book book gleich objectid objectid des ausgewählten buches ist verwenden sie die suchmethode einer abfrage mit der query() query() methode wenn die operationen erfolgreich sind, wird das objekt in der book book zurückgegeben wir verwenden die get methode, um die daten abzurufen führen sie die app aus und testen sie die neue abfrage klicken sie zuerst auf die list publisher/book list publisher/book schaltfläche wählen sie ein buch aus der liste aus der nächste bildschirm zeigt die daten für die bücher und deren beziehungen an es ist fertig! an diesem punkt haben sie gelernt, wie man viele zu viele beziehungen erstellt und abfragt und wie man abfragen durchführt, die daten von verwandten objekten in parse auf flutter flutter zurückgeben