我正在使用ZKSForce库将数据上传到CLOUD数据库。
在salesforce中,可以选择在单个调用中上载父表和子表。 salesforce - create
是否在ZkSForce中允许此功能。如何将子对象引用传递给父表。
答案 0 :(得分:2)
是的,在ZKSforce中创建的工作方式与底层SOAP API完全相同,您传入要创建的ZKSObject数组。
// 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值,这将让您联系到记录在一起创建调用而无需使用某些外部系统维护externalIds-> salesforce映射。