我正在使用 SugarCRM Pro 6.5.5
我需要创建一个报价并使用 REST API 向其中添加产品。所有捆绑包 > Prof theset_entry
的工作,并且set_relationship
for ProductBoducts 工作正常。但是,set_relationship
对于 Quotes > ProductBundles 不起作用。
这是我对 ProductBundles > Products 的输入:这很好用
{
"session":"5qklti658f0ooou135vt8fkbi4",
"module":"ProductBundles",
"module_id":"50b71673-b555-9d68-04c9-508ef9582f47",
"link_field_name":"products",
"related_ids":[
"a9615ab1-cd89-1549-f9b8-508f00c6fa84"
]
}
这是我对 Quotes > ProductBundles 的输入:这不起作用
{
"session":"jqodi1pu8u2l8basca1hhcbt27",
"module":"Quotes",
"module_id":"bc01a88a-35c9-25ed-dfac-508ef206a264",
"link_field_name":"product_bundles",
"related_ids":[
"50b71673-b555-9d68-04c9-508ef9582f47"
]
}
但它仍然返回:
{
"created":1,
"failed":0,
"deleted":0
}
但是,表中没有创建记录product_bundle_quote
。
我已经深入研究了 Sugar 代码,发现了一些有趣的东西。
在service/core/SoapHelperWebService.php
第 735 行,是这样的:
$mod->$link_field_name->add($related_ids, $name_value_pair);
它在第 118 行调用add
文件data/Relationships/M2MRelationship.php
中的方法。有趣的$lhsLinkName
是,它是 NULL,这会导致方法返回 false。这是一个片段:
public function add($lhs, $rhs, $additionalFields = array())
{
$lhsLinkName = $this->lhsLink;
$rhsLinkName = $this->rhsLink;
if (empty($lhs->$lhsLinkName) && !$lhs->load_relationship($lhsLinkName))
{
$lhsClass = get_class($lhs);
$GLOBALS['log']->fatal("could not load LHS $lhsLinkName in $lhsClass");
return false;
}
if (empty($rhs->$rhsLinkName) && !$rhs->load_relationship($rhsLinkName))
{
$rhsClass = get_class($rhs);
$GLOBALS['log']->fatal("could not load RHS $rhsLinkName in $rhsClass");
return false;
}
它在第一个if()
块中返回 FALSE,这意味着永远不会创建记录。
此外,这显示在我的日志中:
[2139][1][FATAL] could not load LHS in ProductBundle
所以,是的,我被困在这里。我尝试搜索所有我能找到的东西,包括错误,但我没有发现任何有用的东西。