La classe MongoDBRef
(PECL mongo >=0.9.0)
Cette extension, qui définie cette classe est obsolète. Veuillez utiliser l'extension MongoDB à la place. Il n'y a pas d'équivalent à cette classe dans la nouvelle extension.
Le concept des références de base de données, et par conséquence cette classe, est obsolète dans la base de données.
Introduction
Cette classe sert à créer des liens légers entre des objets de différentes colllections.
Motivation : Supposez que vous voulez lier un document dans une autre collection. La façon la plus facile est de créer un champ dans le document courant. Par exemple, si vous avez une collection "people" et une collection "addresses", vous devriez vouloir créer un lien entre chaque document d'une personne et chaque document d'adresses :
Exemple #1 Liage des documents
<?php
$people = $db->people;
$addresses = $db->addresses;
$myAddress = array("line 1" => "123 Main Street",
"line 2" => null,
"city" => "Springfield",
"state" => "Vermont",
"country" => "USA");
// Sauvegarde de l'adresse
$addresses->insert($myAddress);
// Sauvegarde une personne avec une référence vers l'adresse
$me = array("name" => "Fred", "address" => $myAddress['_id']);
$people->insert($me);
?>
Par la suite, vous pouver retrouver l'adresse d'une personne en interrogeant la collection "addresses" avec un MongoId sauvegardé dans la collection "people".
Supposez maintenant que vous avez un cas plus général, où vous ne savez pas quelle collection (ou bien quelle base de données) contient le document référencé. La classe MongoDBRef est un bon choix dans ce cas, vu qu'elle a un format commun que tous les drivers et bases de données comprennent.
Si chaque personne a une liste de choses qu'elles aiment, pouvant venir de plusieurs collections, comme des "hobbies", "sports", "books", etc., vous pouvez utiliser la classe MongoDBRef pour garder une trace des collections fournissant ces choses :
Exemple #2 Création de lien MongoDBRef
<?php
$people = $db->selectCollection("people");
// Les modèles de train sont dans la collection "hobbies"
$trainRef = MongoDBRef::create("hobbies", $modelTrains['_id']);
// Le foot dans la collection "sports"
$soccerRef = MongoDBRef::create("sports", $soccer['_id']);
// Maintenant, vous connaissez la collection dont les éléments du tableau "likes"
// proviennent, au moment où vous souhaitez récupérer les documents associés
$people->insert(array("name" => "Fred", "likes" => array($trainRef, $soccerRef)));
?>
On peut représenter les références des bases de données comme des liens: elles donnent l'adresse unique d'un document, mais elles ne le chargent pas et ne suivent pas les lien/référence automatiquement.
Une référence de base de données est juste un tableau associatif, pas une instance de MongoDBRef, cette classe est donc un peu différente des autres classes de tyes de données, elle ne contient que des méthodes statiques pour manipuler les références de bases de données.
Synopsis de la classe
Sommaire
- MongoDBRef::create — Crée un nouvelle référence de base de données
- MongoDBRef::get — Lit l'objet identifié par la référence
- MongoDBRef::isRef — Vérifie si un tableau est une référence de base de données
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.mongodbref.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.