3

v2 REST APIを使用してSugarCRMから特定のアカウント(アカウントIDを知っています)のすべての連絡先を取得しようとしています。

次のパラメータを使用してGETリクエストを送信しています。

input_type => 'JSON'

response_type => 'JSON'

method => 'get_entry_list'

rest_data => '{session:"some-valid-session-id", module_name:"Contacts", query:"contacts.account_id=some-valid-id"}'

このアカウントに関連するすべての連絡先を取得する予定ですが、代わりにエラー「... MySQLエラー1054:不明な列'contacts.account_id'in'whereclause'」が表示されます。

ただし、クエリを提供せずにすべての連絡先を取得しようとすると(query ='')、すべての連絡先とそのすべてのプロパティを取得し、account_idプロパティがあることがわかります。

誰か助けてもらえますか?

4

3 に答える 3

4

試してみてくださいquery:"accounts.id=some-valid-id"

それは過去に私のために働いたことがありSOAP APIます。

于 2012-09-27T12:55:27.887 に答える
4

これが私の方法です。次のラッパークラスを使用します:http://github.com/asakusuma/SugarCRM-REST-API-Wrapper-Class/

/**
 * returns an array of contacts that are related to the accountId passed as a param.
 * The array returned will be an array of associative arrays.
 * @param $accountId
 * @param array $contactSelectFields optional sets the different items to return, default includes id, email1, name, title, phone_work, and description
 * @return array
 *
 */
public function getAllContactsAtOrganization( $accountId, $contactSelectFields=array("id", "email1", "name", "title", "phone_work", "description")) {

    $sugar = new Sugar_REST( SUGAR_REST_URL, SUGAR_USER_NAME, SUGAR_PASSWORD);

    $fields = array( "Accounts" => array("id", "name"),
        "Contacts" =>  $contactSelectFields);
    $options = array(
        'where' => "accounts.id='$accountId'"
    );
    $apiResult = $sugar->get_with_related("Accounts", $fields, $options );


    $contacts = array();
    foreach( $apiResult['relationship_list'][0]['link_list'][0]['records'] as $almostContact) {
        $curr = array();
        foreach($contactSelectFields as $key) {
            $curr[$key] = $almostContact['link_value'][$key]['value'];
        }
        $contacts[] = $curr;
    }

    //print_r($contacts);

    return $contacts;
}

サンプルリターン

Array
(
    [0] => Array
        (
            [id] => 47e1376c-3029-fc42-5ae2-51aeead1041b
            [email1] => johndoe@gmail.com
            [name] => Blake Robertson
            [title] => CTO
            [phone_work] => 8881112222 
            [description] => Opinionated developer that hates SugarCRM's REST API with a passion!
        )

    [1] => Array
        (
            [id] => 4c8e3fcf-8e69-ed7d-e239-51a8efa4f530
            [email1] => csmith@mailinator.com
            [name] => Carolyn Smith
            [title] => Director of Something
            [phone_work] => 832-211-2222
            [description] => She's a smooth operator...
        )
)

参考のために

これが「rest-data」です(うまくフォーマットされています)

php配列のprint_rを使用

Array
(
    [session] => 9j7fm4268l0aqm25kvf9v567t3
    [module_name] => Accounts
    [query] => accounts.id='e583715b-7168-5d61-5fb1-513510b39705'
    [order_by] => 
    [offset] => 0
    [select_fields] => Array
        (
            [0] => id
            [1] => name
        )

    [link_name_to_fields_array] => Array
        (
            [0] => Array
                (
                    [name] => contacts
                    [value] => Array
                        (
                            [0] => id
                            [1] => email1
                            [2] => name
                            [3] => title
                            [4] => phone_work
                            [5] => description
                        )

                )

        )

    [max_results] => 20
    [deleted] => FALSE
)

ポストボディ

method = get_entry_list&input_type = JSON&response_type = JSON&rest_data = {"session": "iov5a257lk5acsg9l3ll6kuej3"、 "module_name": "Accounts"、 "query": "accounts.id ='e583715b-7168-5d61-5fb1-513510b39705'"、 "order :null、 "offset":0、 "select_fields":["id"、 "name"]、 "link_name_to_fields_array":[{"name": "contacts"、 "value":["id"、 "email1"、 "name"、 "title"、 "phone_work"、 "description"]}]、 "max_results":20、 "deleted": "FALSE"} method = logout&input_type = JSON&response_type = JSON&rest_data = {"session": "iov5a257lk5acsg9l3ll6kuej3"}

于 2013-06-26T07:49:55.660 に答える
1

私はまだSugarCRMに精通していませんが、account_id = some-valid-idだけで試してみましたか?また、sugarcrmに連絡先を追加するためのRESTリクエストを実行し、テーブルの名前は言及せず、フィールドのみを言及したためです。私はこれを試しませんでしたが、モジュールの名前についてはすでに言及しているので、論理的に思えます。したがって、sugarは、クエリを処理するときに検索するテーブルを知っていると思います。

于 2012-09-27T08:07:40.223 に答える