2013-04-14 64 views
1

什么不对这个代码:SugarCRM的肥皂get_entry_list

$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的一个字段。为了简化原因,当我们向表账户添加电子邮件时,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,它将对所有其它模块的正常工作。