Примеры

Центральной точкой входа в X DevAPI является функция mysql_xdevapi\getSession(), которая получает URI на сервер MySQL 8.0 и возвращает объект mysql_xdevap\Session.

Пример #1 Подключение к серверу MySQL

<?php
try {
    
$session mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(
Exception $e) {
    die(
"Не удалось установить соединение: " $e->getMessage());
}
 
// ... используйте $session
?>

Сессия обеспечивает полный доступ к API. Для новой установки сервера MySQL первым шагом является создание схемы базы данных с коллекцией для хранения данных:

Пример #2 Создание схемы и коллекции на сервере MySQL

<?php
$schema 
$session->createSchema("test");
$collection $schema->createCollection("example");
?>

При хранении данных, как правило, json_encode() используется для кодирования данных в 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"
}

Пример демонстрирует, что сервер MySQL добавляет дополнительное поле с именем _id, которое служит первичным ключом к документу.

В примере также показано, что извлеченные данные сортируются в алфавитном порядке. Этот конкретный порядок исходит из эффективного двоичного хранилища внутри сервера 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.