Phalcon - Object Document Mapper

Bevor Sie mit den Konzepten von beginnen Object Relational Mapper (ORM) und Object Document Mapper (ODM) ist es wichtig, den Unterschied zwischen SQL- und NoSQL-Datenbanken zu verstehen.

Die folgende Tabelle zeigt die Unterschiede zwischen SQL und NoSQL -

SQL NoSQL
Sie werden auch als relationale Datenbanken (RDBMS) bezeichnet. Sie werden als nicht relationale oder verteilte Datenbank bezeichnet
Die Struktur der Datenbank besteht aus Tabellen und Ansichten Es besteht aus dokumentbasierten und grafischen Datenbanken
Es enthält ein vordefiniertes Schema Es hat ein dynamisches Schema
Es ist sehr leistungsfähig zum Definieren und Bearbeiten von Daten Es ist leistungsstark bei der Verwaltung von Daten als Sammlung von Dokumenten

Phalcon kann mit SQL- und NoSQL-Datenbanken zugeordnet werden. Dies wird mithilfe von Object Document Mapper (ODM) für die NoSQL-Datenbank und Object Relational Mapper (ORM) für die SQL-Datenbank erreicht.

In Phalcon besteht das ORM-Konzept darin, ein Modell zu erstellen, das dem angegebenen Tabellennamen zugeordnet ist, wie wir in den vorherigen Kapiteln gesehen haben. Es folgt allen Einschränkungen der referenziellen Integrität.

Object Document Mapper (ODM)

Es ist ein Objekt, das der NoSQL-Datenbank zugeordnet ist. Wie der Name schon sagt, ordnet es das dokumentbezogene Modul zu. Phalcon verwendet es, um Datenbanken wie MongoDB zuzuordnen.

Beispiel

Step 1 - Erstellen Sie eine Datenbank mit dem Namen MongoDB “test”. Wir werden diese Datenbank verwenden, um eine Zuordnung vorzunehmen und die entsprechende Antwort zu erhalten.

Step 2- Überprüfen Sie die Datenbank auf eingefügte Datensätze. Der damit verbundene Befehl lautet -

db.collection.find()

Es wird beobachtet, dass jedes Dokument mit ObjectId zugeordnet ist, was eine Funktion von ODM ist. Der Wert vonObjectId ist eindeutig und wird später verwendet, um alle Daten abzurufen, die in Bezug auf diese bestimmte ID gespeichert sind.

Step 3- Modell für die erstellte Datenbank einrichten. Ein Modell ist eine Klasse, die sich erweitertPhalcon\Mvc\Collection. Test.php Das Modell enthält den folgenden Code.

<?php 
use Phalcon\Mvc\Collection;  

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

Step 4 - Konfigurieren Sie das Projekt einschließlich der Datenbankkonnektivität in 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 - Drucken Sie die Werte in Bezug auf ObjectId mit der Hilfe von 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; 
   } 
}

Die Ausgabe zeigt Daten an, die mit der Objekt-ID übereinstimmen. Wenn die Objekt-ID nicht mit den Datensätzen in den Dokumenten übereinstimmt, wird die entsprechende Ausgabe nicht angezeigt, wenn die Anzahl der Datensätze abgerufen wird.