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()
}
这将查找并从媒体表返回结果。