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.