Прежде чем начать с концепций Object Relational Mapper (ORM) и Object Document Mapper (ODM), важно понять разницу между базами данных SQL и NoSQL.
В следующей таблице приведены различия между SQL и NoSQL.
SQL | NoSQL |
---|---|
Они также называются реляционными базами данных (RDBMS) | Они называются нереляционной или распределенной базой данных. |
Структура базы данных состоит из таблиц и представлений | Он состоит из баз документов и графических баз данных. |
Включает предопределенную схему | Имеет динамическую схему |
Это очень мощный инструмент для определения и обработки данных | Это мощный в поддержании данных как сбор документов |
Phalcon имеет возможность сопоставления с базами данных SQL и NoSQL. Это достигается с помощью Object Document Mapper (ODM) для базы данных NoSQL и Object Relational Mapper (ORM) для базы данных SQL.
В Phalcon концепция ORM заключается в создании модели, связанной с данным именем таблицы, как мы видели в предыдущих главах. Он следует всем ограничениям ссылочной целостности.
Картографирование объектных документов (ODM)
Это объект, связанный с базой данных NoSQL. Как следует из названия, он отображает связанный с документом модуль. Phalcon использует его для сопоставления с базами данных, такими как MongoDB.
пример
Шаг 1 — Создайте базу данных MongoDB с именем «test» . Мы будем использовать эту базу данных для сопоставления и получения соответствующего ответа.
Шаг 2 — Проверьте наличие вставленных записей в базе данных. Команда, связанная с этим —
db.collection.find()
Замечено, что каждый документ отображается с ObjectId, который является функцией ODM. Значение ObjectId является уникальным и впоследствии используется для извлечения всех данных, хранящихся в отношении этого конкретного Id.
Шаг 3 — Настройте модель для созданной базы данных. Модель — это класс, который расширяет Phalcon \ Mvc \ Collection . Модель test.php будет включать следующий код.
<?php use Phalcon\Mvc\Collection; class Test extends Collection { public function initialize() { $this->setSource("test"); } }
Шаг 4 — Настройте проект, включая подключение к базе данных в 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 );
Шаг 5 — Распечатайте значения относительно ObjectId с помощью 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; } }
Выходные данные будут отображать данные, которые соответствуют objectId. Если objectId не соответствует в соответствии с записями в документах, то соответствующий вывод не будет отображаться при получении количества записей.