2016-05-11 5 views
0

Ich möchte Daten wie folgende Struktur erhalten.Schreibe Join-Abfrage DBAccess in Swift

Display Record

// Medientabelle wie dieses :: -

import UIKit 

@objc(Media) 

class Media: DBObject {  
    dynamic var media_id : NSNumber!;  
    dynamic var post_id : Post!;  
    dynamic var desc : String!;  
    dynamic var url : String!; 
} 

Ich möchte Daten erhalten von "Beitrag" Tisch mit Medienliste von "Medien" Tabelle.

Ein Beitrag hat möglicherweise mehrere Medien oder es kann nicht sein (Medienliste Null).

Bitte schlagen Sie DBAccess Query vor, um DBResultSet in Swift zu erhalten.

+0

Ich habe ein spezifisches Beispiel zu meiner Antwort unten hinzugefügt, unter Verwendung Ihrer Klassenbeschreibung oben. –

Antwort

1

Es gibt einen Parameter, den Sie der Abfrage hinzufügen: joinTo.

Hier ist der Eintrag aus der Header-Datei.

/** 
* Used to include "joined" data within the query string, you must use the tablename.columnname syntax within a where statement 

* 
* @param (Class)joinTo the class you would like to pwrform a SQL JOIN with 
* @param (NSString*)leftParameter the property name that you would like to use within the local object to match against the target 
* @param (NSString*)targetParameter the property within the class you wish to join with that will be matched with the left parameter. 
* @return (DBQuery*) this value can be discarded or used to nest queries together to form clear and concise statements. 
*/ 
- (DBQuery*)joinTo:(Class)joinClass leftParameter:(NSString*)leftParameter targetParameter:(NSString*)targetParameter; 

Ein Beispiel in einer schnellen und Verknüpfung von zwei Tabellen (Employee & Login) ist unten.

Employee.query().joinTo(Login, leftParameter: "login", targetParameter: "Id") 

Offensichtlich kann die Klasse nicht zur Laufzeit geändert werden, so dass Sie die Ergebnisse in dem Dictionary-Objekt finden, joinedResults

Obwohl das, was Sie beschreiben, ist weit mehr mit Beziehungen zu tun, ich an dem einen schlägt vor, Sie hier zu viele Beispiele an:

Relating two objects in DBAccess

So in Ihrem speziellen Fall würden fügen Sie die folgende Methode, um Ihren Beitrag Klasse.

func media -> DBResultSet { 
     return Media.query().whereWithFormat("post_id = %@", withParameters: [self.post_id]).fetch() 
    } 

Dies wird nachschlagen und die Ergebnisse aus der Medien-Tabelle zurückgeben.