Rechercher une fonction PHP

La classe MongoDBRef

(PECL mongo >=0.9.0)

Avertissement

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

MongoDBRef {
/* Méthodes */
public static create ( string $collection , mixed $id [, string $database ] ) : array
public static get ( MongoDB $db , array $ref ) : array
public static isRef ( mixed $ref ) : bool
}

Retour à la première page de Manuel PHP  Table des matières Haut

Sommaire

Rechercher une fonction PHP

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

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

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.

Table des matières Haut