Phalcon - mapowanie dokumentów obiektów
Zanim zaczniesz od pojęć Object Relational Mapper (ORM) i Object Document Mapper (ODM), ważne jest, aby zrozumieć różnicę między bazami danych SQL i NoSQL.
W poniższej tabeli przedstawiono różnice między SQL i NoSQL -
| SQL | NoSQL | 
|---|---|
| Nazywa się je również relacyjnymi bazami danych (RDBMS) | Nazywa się je nierelacyjnymi lub rozproszonymi bazami danych | 
| Struktura bazy danych składa się z tabel i widoków | Składa się z baz danych opartych na dokumentach i grafach | 
| Zawiera predefiniowany schemat | Ma dynamiczny schemat | 
| Jest bardzo przydatny do definiowania i manipulowania danymi | Jest potężny w utrzymywaniu danych jako zbioru dokumentów | 
Phalcon ma możliwość mapowania z bazami danych SQL i NoSQL. Osiąga się to za pomocą Object Document Mapper (ODM) dla bazy danych NoSQL i Object Relational Mapper (ORM) dla bazy danych SQL.
W Phalcon koncepcja ORM polega na stworzeniu modelu powiązanego z podaną nazwą tabeli, jak widzieliśmy w poprzednich rozdziałach. Jest zgodny z wszystkimi ograniczeniami integralności referencyjnej.
Object Document Mapper (ODM)
Jest to obiekt powiązany z bazą danych NoSQL. Jak sama nazwa wskazuje, mapuje moduł związany z dokumentem. Phalcon używa go do mapowania z bazami danych, takimi jak MongoDB.
Przykład
Step 1 - Utwórz bazę danych MongoDB o nazwie “test”. Użyjemy tej bazy danych do zmapowania i uzyskania odpowiedniej odpowiedzi.
 
                 
                Step 2- Sprawdź wstawione rekordy w bazie danych. Polecenie z nim związane to -
db.collection.find() 
                Zauważono, że każdy dokument jest mapowany za pomocą ObjectId, co jest cechą ODM. WartośćObjectId jest unikalny i później używany do pobierania wszystkich danych przechowywanych w odniesieniu do tego konkretnego identyfikatora.
Step 3- Skonfiguruj model dla utworzonej bazy danych. Model to klasa, która rozszerzaPhalcon\Mvc\Collection. Test.php model będzie zawierał następujący kod.
<?php 
use Phalcon\Mvc\Collection;  
class Test extends Collection { 
   public function initialize() { 
      $this->setSource("test"); 
   } 
}Step 4 - Skonfiguruj projekt, w tym łączność z bazą danych w formacie 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 - Wydrukuj wartości w odniesieniu do ObjectId z pomocą 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; 
   } 
}Dane wyjściowe wyświetlą dane zgodne z objectId. Jeśli objectId nie jest dopasowany zgodnie z rekordami w dokumentach, odpowiednie dane wyjściowe nie będą wyświetlane, ponieważ liczba rekordów jest pobierana.
