0

我正在尝试使用 SharkORM 来获取对象之间的关系。我熟悉 SharkORM 文档中定义的joinTo 语法,但我不确定如何使用生成的joinedResults 对象来获取我需要的相关对象。

[[Person query] joinTo:[Department class] leftParameter:@"department" targetParameter:@"Id"]

输出

{
    "Department.Id" = 61;
    "Department.location" = 35;
    "Department.name" = Development;
}

进入 Person.joinedResults 字段,但是如何获取这些结果并取回 Department 对象。我尝试在 joinTo 之后调用 person.department,但它似乎对数据库进行了第二次查询,就好像我根本没有使用 joinTo 一样。

我真的希望手动将 person.joinedResults 的字典结果解析为 Department 对象吗?这非常麻烦,尤其是当您开始加入多个关系时。

我觉得好像我缺少一些明显的方式来使用 joinTo 的结果。

4

1 回答 1

1

联接功能是对关系的补充。因此,您可以在查询中引用不相关(或相关)的表,但是您返回的对象只能根据您的原始类进行物理结构化,并且是从数据而不是从您的查询中定义的。

所以,简而言之;joinTo:将使您能够在查询中引用远程或不相关的对象以供选择。

但是要遍历对象关系,您将使用属性。

Person* p = GetFirstPerson()
// reference/traverse the object to look at relationships (1:1)
p.department

或者

p.department.location

所以我想我要说的是,即使它是类似 SQL 的语法,你也只能在一个固定的结构中得到严格定义的类,除非使用其他接口,如 sum、distinct 等。

于 2017-07-10T15:18:18.203 回答