此代码有什么问题:
$query = "email1 = '{$email}'";
Mage::log($query);
$account = $client->get_entry_list($session_id, 'Accounts', $query);
我无法弄明白为什么它不起作用并给我一个错误:
looks like we got no XML document
Trace:
#0 /var/www/empresam/app/code/local/Empresam/SugarIntegration/Helper/Methods.php(147): SoapClient->__call('get_entry_list', Array)
#1 /var/www/empresam/app/code/local/Empresam/SugarIntegration/Helper/Methods.php(147): SoapClient->get_entry_list('v12adkskr9va2pe...', 'Accounts', 'email1 = 'magag...')
#2 /var/www/empresam/app/code/local/Empresam/Helloworld/controllers/IndexController.php(17): Empresam_SugarIntegration_Helper_Methods->addAccount('v12adkskr9va2pe...', Object(SoapClient), Object(Mage_Customer_Model_Customer))
#3 /var/www/empresam/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Empresam_Helloworld_IndexController->indexAction()
#4 /var/www/empresam/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#5 /var/www/empresam/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 /var/www/empresam/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#7 /var/www/empresam/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#8 /var/www/empresam/index.php(89): Mage::run('', 'store')
#9 {main}
我的赌注是查询格式不正确,但我对“潜在客户”执行了相同的操作,我可以成功返回潜在客户。
主要代码就是这个:
$oldname = $oldfirstname . ' ' . $oldlastname;
$query = "account_name = '{$oldname}'";
$lead = $client->get_entry_list($session_id, 'Leads', $query);
值{$email}
是正确的,我已确认将其打印到日志中。我几乎可以肯定错误是在查询格式化,但正如我所说,它对LEAD有用吗?它不在这里工作吗?
我试图在查询中使用'account_name',但结果是一样的。参数'account_name'和'email1'都有效,因为我可以成功创建帐户,但不能检索它们!
答案 0 :(得分:2)
在每个模块中,电子邮件地址都存储在另一个数据库中。因此,为了使这个查询起作用,因为SugarCRM Soap方法“省略”了Select * from Account Where
部分,当我们查找email1
时,他并没有发现它就好像它是表Accounts
的一个字段1}}。为简化原因,当我们向表Accounts添加电子邮件时,Sugar并不关心该字段是否属于另一个数据库,默认情况下,他会让您引入电子邮件地址。但是,当查询时,我们不能做这样的事情:
$query = "email1 = '{$email}'";
因为电子邮件存储在不同的表中。为了得到我想要的东西,我必须这样做:
public function getAccount($session_id, $client, $email){
$query = "accounts.id in ( select bean_id from email_addr_bean_rel inner join email_addresses where email_addr_bean_rel.email_address_id = email_addresses.id and email_addr_bean_rel.deleted = 0 and email_addresses.deleted = 0 and bean_module = 'Accounts' and email_addresses.email_address = '{$email}' )";
$acc = $client->get_entry_list($session_id, 'Accounts', $query);
return $acc;
}
在查询中,只需将Accounts
替换为您的模块名称,它将适用于所有其他模块。