Phalcon - Mappeur de document objet

Avant de commencer avec les concepts de Object Relational Mapper (ORM) et Object Document Mapper (ODM), il est important de comprendre la différence entre les bases de données SQL et NoSQL.

Le tableau suivant met en évidence les différences entre SQL et NoSQL -

SQL NoSQL
Ils sont également appelés bases de données relationnelles (SGBDR) Ils sont appelés base de données non relationnelle ou distribuée
La structure de la base de données est constituée de tables et de vues Il se compose de bases de données documentaires et graphiques
Il comprend un schéma prédéfini Il a un schéma dynamique
Il est très puissant pour définir et manipuler des données Il est puissant pour conserver les données sous forme de collecte de documents

Phalcon a la capacité de mapper avec des bases de données SQL et NoSQL. Ceci est réalisé à l'aide de l'Object Document Mapper (ODM) pour la base de données NoSQL et du Object Relational Mapper (ORM) pour la base de données SQL.

Dans Phalcon, le concept ORM consiste à créer un modèle associé au nom de table donné comme nous l'avons vu dans les chapitres précédents. Il suit toutes les contraintes d'intégrité référentielle.

Object Document Mapper (ODM)

C'est un objet associé à la base de données NoSQL. Comme son nom l'indique, il mappe le module lié au document. Phalcon l'utilise pour mapper avec des bases de données comme MongoDB.

Exemple

Step 1 - Créer une base de données de MongoDB nommée “test”. Nous utiliserons cette base de données pour mapper et obtenir la réponse appropriée.

Step 2- Vérifiez les enregistrements insérés dans la base de données. La commande qui lui est associée est -

db.collection.find()

On observe que chaque document est mappé avec ObjectId qui est une fonctionnalité d'ODM. La valeur deObjectId est unique et utilisé plus tard pour récupérer toutes les données stockées par rapport à cet identifiant particulier.

Step 3- Configurer le modèle de la base de données créée. Un modèle est une classe qui s'étendPhalcon\Mvc\Collection. Test.php modèle inclura le code suivant.

<?php 
use Phalcon\Mvc\Collection;  

class Test extends Collection { 
   public function initialize() { 
      $this->setSource("test"); 
   } 
}

Step 4 - Configurer le projet, y compris la connectivité de la base de données dans services.php.

// Simple database connection to localhost 

$di->set( 
   "mongo", 
   function () { 
      $mongo = new MongoClient();  
      return $mongo->selectDB("test"); 
   }, 
   true 
); 

// Connecting to a domain socket, falling back to localhost connection 

$di->set( 
   "mongo", 
   function () { 
      $mongo = new MongoClient( 
         "mongodb:///tmp/mongodb-27017.sock,localhost:27017" 
      );  
      return $mongo->selectDB("test"); 
   }, 
   true 
);

Step 5 - Imprimer les valeurs par rapport à ObjectId avec l'aide de TestController.php.

<?php  

use Phalcon\Mvc\Controller;  

class TestController extends Controller { 
   public function index() { 
      // Find record with _id = "5087358f2d42b8c3d15ec4e2" 
      $test = Test::findById("5819ab6cfce9c70ac6087821"); 
      echo $test->data; 
   } 
}

La sortie affichera des données qui correspondent à objectId. Si le objectId ne correspond pas aux enregistrements dans les documents, la sortie appropriée ne sera pas affichée lorsque le nombre d'enregistrements est extrait.