Написать запрос присоединения 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()
    }

Будет выполнен поиск и возврат результатов из таблицы мультимедиа.

Другие вопросы по тегам