1

このコードの問題点:

$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' の両方のパラメーターは有効です。なぜなら、私はアカウントを正常に作成できますが、それらを取得できないからです!

4

1 に答える 1

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、モジュール名に置き換えるだけで、他のすべてのモジュールで機能します。

于 2013-04-16T12:35:40.913 に答える