通过子关系 ParseSwift 查询父级

Posted

技术标签:

【中文标题】通过子关系 ParseSwift 查询父级【英文标题】:Query Parent by Child Relation ParseSwift 【发布时间】:2022-01-08 06:42:52 【问题描述】:

我希望通过子关系对象查询我的父 ParseObject。我有一个名为 Matches 的父级,它有一个字段 Relation(Wrestlers)。我想找到摔跤手所属的所有比赛。非常感谢任何帮助,因为我只能找到 ParseSwift 库的过时版本的文档,而操场似乎没有帮助,因为它只使用内置关系而不是自定义对象。

此查询不返回任何结果。 Wrestler 设置为 ParseObject 的一个实例,我想在其上过滤关系

let query = Match.query("wrestlers" == wrestler).includeAll()

【问题讨论】:

您的代码看起来不错。您的关系名称是wrestlers 还是Wrestlers?另外,你能分享一下你是如何创建wrestler var的吗? 【参考方案1】:

playgrounds 表示角色和关系状态:

使用此关系,您可以与其他ParseObjecs 创建多对多关系,类似于usersroles

基本上,如果您遵循Roles 示例,您应该能够创建任何关系和查询。特定于您的用例(至少使用您在问题中提供的少量代码):

let match = Match() // Next time, please provide the code for all of your ParseObjects in question.
let matchRelation = match.relation("wrestlers", child: wrestler)
do 
    let wrestlers = try await match.relation.query(wrestler).includeAll().find()
    print("Found related wrestlers: \(wrestlers)")
 catch 
    print(error)

ParseSwift 2.4.0+ 中,您可以执行以下操作:

let matchRelation = match.relation("wrestlers", child: wrestler)
do 
    let wrestlers = try await wrestler.relation.query("wrestlers", parent: match).includeAll().find()
    print("Found related wrestlers: \(wrestlers)")
 catch 
    print(error)
        

如果需要更清楚,您可以参考Playgrounds in the pending PR。

我只能找到 ParseSwift 库过时版本的文档,而 Playground 似乎没有帮助,因为它只使用内置关系而不是自定义对象。

这不是真的,因为 ParseSwift SDK 的唯一文档是 API documentation 和 Swift Playgrounds,它们都是最新的。如果您指的是ios SDK 的documentation,那是与 ParseSwift SDK 完全不同的 SDK。 iOS SDK 是一个与 Swift 桥接的 Objective-C SDK,与 SDK 无关。

【讨论】:

以上是关于通过子关系 ParseSwift 查询父级的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询以选择在同一列中具有不同值的子记录的父级

MySQL递归查询,实现上下级联查,父子级查询

MAX日期的Laravel子查询-与父级的子查询链接中的日期时间格式无效

Firebase:在不知道父级的情况下查询内部子级

使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例

sql查询所有父级所有子级