例
X DevAPI の中心的なエントリポイントは、 mysql_xdevapi\getSession() 関数です。 これは MySQL 8.0 サーバーへの URI を受取り、 mysql_xdevapi\Session オブジェクトを返します。
例1 MySQL Serverへの接続
<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Connection could not be established: " . $e->getMessage());
}
// ... use $session
?>
セッションは、API への完全なアクセスを提供します。 新しい MySQL サーバーをインストールした後の最初のステップは、 データを保存するために、コレクションを使ってデータベースのスキーマを作ることです:
例2 MySQL サーバー上で、スキーマとコレクションを作る
<?php
$schema = $session->createSchema("test");
$collection = $schema->createCollection("example");
?>
データを保存する際には、 json_encode() 関数を使い、データを JSON にエンコードします。 JSON はコレクションに保存するのに使います。
次の例は、既に述べた例で作ったコレクションにデータを保存します。 そして、その一部を再度取得します。
例3 データを保存し、取得する
<?php
$marco = [
"name" => "Marco",
"age" => 19,
"job" => "Programmer"
];
$mike = [
"name" => "Mike",
"age" => 39,
"job" => "Manager"
];
$schema = $session->getSchema("test");
$collection = $schema->getCollection("example");
$collection->add($marco, $mike)->execute();
var_dump($collection->find("name = 'Mike'")->execute()->fetchOne());
?>
上の例の出力は、 たとえば以下のようになります。
array(4) { ["_id"]=> string(28) "00005ad66aaf0000000000000003" ["age"]=> int(39) ["job"]=> string(7) "Manager" ["name"]=> string(4) "Mike" }
この例では、文書へのプライマリーキーの役割を果たす
_id
という追加フィールドを MySQL サーバーが追加していることを示しています。
さらにこの例は、取得したデータがアルファベット順にソートされていることも示しています。 この特定の並び順は、MySQL サーバー内の効率的なバイナリストレージから来ていますが、 それに依存すべきではありません。詳細は、MySQL の JSON データ型のドキュメントを参照ください。
オプションで、複数の文書を取得するのに、PHP のイテレータが使えます。
例4 複数の文書を取得し、それを走査する
<?php
$result = $collection->find()->execute();
foreach ($result as $doc) {
echo "{$doc["name"]} is a {$doc["job"]}.\n";
}
?>
上の例の出力は、 たとえば以下のようになります。
Marco is a Programmer. Mike is a Manager.