我正在使用ZKSForce库将数据上传到CLOUD数据库。

在salesforce中,有一个选项可以在单个调用中上传父表和子表。
salesforce - create

确实,ZkSForce允许使用此功能。如何将子对象引用传递给父表。

最佳答案

是的,在ZKSforce中创建的工作方式与底层SOAP API完全相同,您传入要创建的ZKSObjects数组。

// pass an array of ZKSObject's to create in salesforce, returns a matching array of ZKSaveResults
- (NSArray *)create:(NSArray *)objects;

正如您链接提到的文档所提到的,如果您要创建彼此相关的记录,则父记录将需要为其声明一个外部ID字段,而您的子记录将需要使用该字段来声明父母,例如如果您要插入一个具有相关联系人的帐户,并且在帐户上有一个accMaster__c字段(作为externalId),则可以这样做。
ZKSObject *acc = [[ZKSObject alloc] initWithType:@"Account"];
[acc setFieldValue:@"New Account" field:@"Name"];
[acc setFieldValue:@"ACC_1234" field:@"accMaster__C"];

ZKSObject *contact = [[ZKSObject alloc] initWithType:@"Contact"];
[contact setFieldValue:@"Simon" field:@"FirstName"];
[contact setFieldValue:@"Fell" field:@"LastName"];

// per the externalId docs, create a account structure that just contains the externalId value we want to resolve the account relationship for
ZKSObject *accRel = [[ZKSObject alloc] initWithType:@"Account"];
[accRel setFieldValue:@"ACC_1234" field:@"accMaster__C"];
[contact setFieldValue:accRel field:@"Account"];

NSArray *res = [sforce create:[NSArray arrayWithObjects:acc, contact, nil]];
NSLog(@"results are %@", res);

运行此命令并在浏览器中打开新的联系人记录后,您可以看到它将父客户关系设置为我们刚刚创建的新客户记录。

如果您的父记录上没有自然的externalId字段,那么您可以做的一件事就是创建一个并使用客户端的GUID作为新插入记录的externalId值,这将使您在您可以创建 call 而不必让某些外部系统维护externalIds-> salesforce映射。

10-07 15:25