Написать запрос присоединения DBAccess в Swift
Я хочу получить данные, как следующую структуру.
// Таблица медиа, как это::-
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!;
}
Я хочу получить данные из таблицы " Post " со списком " Media " из таблицы " Media ".
В одном сообщении может быть несколько носителей или нет (список СМИ равен нулю).
Пожалуйста, предложите DBAccess Query, чтобы получить DBResultSet в Swift.
1 ответ
Существует параметр, который вы добавляете в запрос, joinTo.
Вот запись из файла заголовка.
/**
* 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;
Ниже приведен пример быстрой связи двух таблиц (Employee & Login).
Employee.query().joinTo(Login, leftParameter: "login", targetParameter: "Id")
Очевидно, что класс не может быть изменен во время выполнения, поэтому вы найдете результаты в объекте Dictionary, joinResults.
Хотя то, что вы описываете, гораздо больше связано с отношениями, я предлагаю вам взглянуть на один-много примеров здесь:
Связывание двух объектов в DBAccess
Поэтому в вашем конкретном случае вы бы добавили следующий метод к вашему классу Post.
func media -> DBResultSet {
return Media.query().whereWithFormat("post_id = %@", withParameters: [self.post_id]).fetch()
}
Будет выполнен поиск и возврат результатов из таблицы мультимедиа.