PHP 8.4.1 Released!

Collection::add

(No version information available, might only be in Git)

Collection::addAjoute un document à la collection

Description

public mysql_xdevapi\Collection::add(mixed $document): mysql_xdevapi\CollectionAdd

Déclenche l'insertion du ou des documents donnés dans la collection, et plusieurs variantes de cette méthode sont prises en charge. Les options incluent :

  1. Ajouter un seul document sous forme de chaîne JSON.

  2. Ajouter un seul document sous forme de tableau comme : [ 'field' => 'value', 'field2' => 'value2' ... ]

  3. Un mélange des deux, et plusieurs documents peuvent être ajoutés dans la même opération.

Liste de paramètres

document

Un ou plusieurs documents, et cela peut être soit du JSON ou un tableau de champs avec leurs valeurs associées. Cela ne peut pas être un tableau vide.

Le serveur MySQL génère automatiquement des valeurs _id uniques pour chaque document (recommandé), bien que cela puisse également être ajouté manuellement. Cette valeur doit être unique, sinon l'opération d'ajout échouera.

Valeurs de retour

Une collection d'objets, Utiliser execute() pour retourner un résultat qui peut être utilisé pour interroger le nombre d'éléments affectés, le nombre d'avertissements générés par l'opération, ou pour récupérer une liste d'identifiants générés pour les documents insérés.

Exemples

Exemple #1 Exemple de mysql_xdevapi\Collection::add()

<?php
$session
= mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
$session->sql("CREATE DATABASE addressbook")->execute();

$schema = $session->getSchema("addressbook");
$create = $schema->createCollection("people");

$collection = $schema->getCollection("people");

// Ajoute deux documents
$collection->add('{"name": "Fred", "age": 21, "job": "Construction"}')->execute();
$collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// Ajoute deux documents en utilisant un seul objet JSON
$result = $collection->add(
'{"name": "Bernie",
"jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
"hobbies": ["Sports","Making cupcakes"]}'
,
'{"name": "Jane",
"jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
"hobbies": ["Walking","Making pies"]}'
)->execute();

// Récupère une liste d'identifiants générés à partir du dernier add()
$ids = $result->getGeneratedIds();
print_r($ids);
?>

Résultat de l'exemple ci-dessus est similaire à :

Array
(
    [0] => 00005b6b53610000000000000056
    [1] => 00005b6b53610000000000000057
)

Notes

Note:

Un identifiant unique _id est généré par MySQL Server 8.0 ou supérieur, comme démontré dans l'exemple. Le champ _id doit être défini manuellement si vous utilisez MySQL Server 5.7.

add a note

User Contributed Notes 2 notes

up
1
cyork at echodreamz dot com
6 years ago
Seems that (at least with MySQL 5.7.23) if you do not set an _id field in the array of items to "add", it fails with error...

[HY000] Document is missing a required field

Adding "_id" => xxxx does resolve the issue.
up
-1
jcastro at eftec dot cl
6 years ago
It returns a mysql_xdevapi\CollectionAdd instead of a mysql_xdevapi\Result
To Top