Phalcon - Mapeador de documentos de objetos

Antes de começar com os conceitos de Object Relational Mapper (ORM) e Object Document Mapper (ODM), é importante entender a diferença entre os bancos de dados SQL e NoSQL.

A tabela a seguir destaca as diferenças entre SQL e NoSQL -

SQL NoSQL
Eles também são chamados de bancos de dados relacionais (RDBMS) Eles são chamados de banco de dados não relacional ou distribuído
A estrutura do banco de dados é constituída por tabelas e visualizações Consiste em bancos de dados baseados em documentos e gráficos
Inclui um esquema predefinido Tem um esquema dinâmico
É muito poderoso para definir e manipular dados É poderoso na manutenção de dados como coleção de documentos

Phalcon tem a capacidade de mapear com bancos de dados SQL e NoSQL. Isso é obtido com a ajuda do Object Document Mapper (ODM) para o banco de dados NoSQL e do Object Relational Mapper (ORM) para o banco de dados SQL.

No Phalcon, o conceito de ORM consiste em criar um modelo associado a um determinado nome de tabela, como vimos nos capítulos anteriores. Ele segue todas as restrições de integridade referencial.

Mapeador de Documento de Objeto (ODM)

É um objeto associado ao banco de dados NoSQL. Como o nome sugere, ele mapeia o módulo relacionado ao documento. Phalcon usa para mapear com bancos de dados como MongoDB.

Exemplo

Step 1 - Crie um banco de dados do MongoDB chamado “test”. Usaremos esse banco de dados para mapear e obter a resposta apropriada.

Step 2- Verifique os registros inseridos no banco de dados. O comando associado a ele é -

db.collection.find()

Observa-se que todo documento é mapeado com ObjectId, que é um recurso do ODM. O valor deObjectId é único e, posteriormente, usado para buscar todos os dados armazenados em relação a esse ID específico.

Step 3- Configurar modelo para o banco de dados criado. Um modelo é uma classe que estendePhalcon\Mvc\Collection. Test.php modelo incluirá o seguinte código.

<?php 
use Phalcon\Mvc\Collection;  

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

Step 4 - Configure o projeto incluindo conectividade de banco de dados em 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 - Imprima os valores em relação a ObjectId com a ajuda 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; 
   } 
}

A saída exibirá dados que correspondem ao objectId. Se o objectId não for correspondido de acordo com os registros nos documentos, a saída apropriada não será exibida conforme o número de registros é obtido.