我想获取类似以下结构的数据。

ios - 快速编写联接查询DBAccess-LMLPHP

//媒体表如下::-

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!;
}


我想从“发布”表中获取数据,并从“媒体”表中获取“媒体”列表。

一则帖子可能是多种媒体,也可能不是(媒体列表为零)。

请建议使用DBAccess查询以在Swift中获取DBResultSet。

最佳答案

您将向查询添加一个参数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.query().joinTo(Login, leftParameter: "login", targetParameter: "Id")


显然,无法在运行时更改类,因此您可以在Dictionary对象joinedResults中找到结果

尽管您所描述的关系更多地与关系有关,但我建议您在此处查看一对多示例:

Relating two objects in DBAccess

因此,在您的特定情况下,可以将以下方法添加到Post类中。

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


这将查找并从媒体表返回结果。

10-06 02:56