CData Connect Cloud 経由で、PHP からDynamics CRM データにアクセス

PHP の標準MySQL ライブラリでDynamics CRM データをクエリする方法。

CData Connect Cloud を使えば、Dynamics CRM データに対し、ETL 処理やキャッシュ処理なしでもMySQL クライアントからデータ連携ができるようになります。次のステップで、Dynamics CRM の仮想MySQL データベースを作成して、mysqli toPDO_MySQL の標準MYSQL インターフェースでリアルタイムDynamics CRM に接続します。

CData Connect Cloud は、Dynamics CRM データのクラウドto クラウドのインターフェースを仮想MySQL として提供し、PHP からRDB のようにデータをSQL でクエリすることができます。CData Connect Cloud がNode.js から発行されるSQL クエリ(フィルタリングやJOIN も可能)をパースしてDynamics CRM に送り、PHP アプリ にDynamics CRM からのデータを返します。インテリジェントなサーバーサイドプロセスで、多様なクエリをパフォーマンス良く利用できます。

Dynamics CRM の仮想MySQL データベースを作成

CData Connect Cloud は、直観的なPoint-and-click インターフェースでデータソースへの接続およびAPI エンドポイント作成を行います。

  1. Connect Cloud にログインして、Databases をクリックします。
  2. 利用できるデータソースアイコンから"Dynamics CRM" を選択します。
  3. Dynamics CRM に接続するために必要なプロパティを入力します。

    Dynamics CRM では、インスタンスごとに接続文字列の設定が必要です。 Authentication セクションでは、有効なDynamics CRM のUser、Password の入力、およびDynamics CRM Server Organization root のURL を設定します。さらに、CRMVersion プロパティに、'CRM2011+' もしくは'CRMOnline' を設定します。IFD コンフィグレーションもサポートされていますので、InternetFacingDeployment をTRUE に設定してください。

    また、Security Token Service(STS)、もしくはAD FS エンドポイントをSTSURL プロパティに設定することもできます。 この値はGetSTSUrl ストアドプロシージャで取得できます。 Office 365 ユーザーはデフォルトSTS URL にCRMVersion の設定だけで接続することができます。

  4. Test Database をクリックします。
  5. Privileges -> Add をクリックして、新しいユーザーを追加し、適切な権限を指定します。

これで、Dynamics CRM の仮想データベースが作成でき、MySQL クライアントからの連携が可能になりました。

PHP での接続

次のサンプルのように、Object-Oriented インターフェースを使い、接続とクエリ実行を行います。 仮想MySQL に以下の接続パラメータで接続します:

  • Host:サービスが稼働しているリモートホストロケーションを指定します。この場合、"myinstance.cdatacloud.net" がリモートホスト設定の値になります。
  • Username:Connect Cloud で登録された権限のあるユーザー名を指定します。
  • Password:ユーザーのパスワードを指定します。
  • Database Name:Dynamics CRM の仮想データベース名を指定します。
  • Port:3306 を指定します。

mysqli

<?php
$mysqli = mysqli_init();

$mysqli->ssl_set("C:/certs/cloudclient.key",
                 "C:/certs/cloudclient.pem",
                 "C:/certs/myCA.pem",
                 NULL,NULL);

$mysqli->real_connect("mysintance.cdatacloud.net", "admin", "mypassword", "dynamicscrmdb",3306,NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
?>

PDO

<?php
$pdo = new PDO('mysql:host=myinstance.cdatacloud.net;dbname=dynamicscrmdb;port=3306;','admin', 'mypassword', array(
    PDO::MYSQL_ATTR_SSL_KEY                => 'C:/certs/cloudclient.key',
    PDO::MYSQL_ATTR_SSL_CERT               => 'C:/certs/cloudclient.pem',
    PDO::MYSQL_ATTR_SSL_CA                 => 'C:/certs/myCA.pem',
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    )
);
?>

PHP でのクエリ

作成された接続でテーブルへのアクセスを実行します。以下がサンプルです:

  1. Account テーブルをクエリします。結果は、$result オブジェクトの関連する配列に保存されます。
  2. PHP ページに行、カラムとして値がプリントされます。
  3. 接続をクローズします。

mysqli

$result = $mysqli->query("SELECT Contact.FirstName, SUM(Account.NumberOfEmployees) FROM Contact, Account GROUP BY Contact.FirstName");
while($row = $result->fetch_assoc()) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$mysqli->close();

PDO

$result = $pdo->query("SELECT Contact.FirstName, SUM(Account.NumberOfEmployees) FROM Contact, Account GROUP BY Contact.FirstName");
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
  foreach ($row as $k=>$v) {
    echo "$k : $v";
    echo "<br />"; 
  }
}
$result = null;
$pdo = null;
 
 
ダウンロード