Phalcon - 对象文档映射器
在开始了解对象关系映射器 (ORM) 和对象文档映射器 (ODM) 的概念之前,了解 SQL 和 NoSQL 数据库之间的区别非常重要。
下表重点介绍了 SQL 和 NoSQL 之间的区别 −
SQL | NoSQL |
---|---|
它们也被称为关系数据库 (RDBMS) | 它们被称为非关系数据库或分布式数据库 |
数据库的结构由表和视图组成 | 它由基于文档的和图形数据库 |
它包含一个预定义模式 | 它有一个动态模式 |
它对于定义和操作数据非常强大 | 它对于将数据维护为文档集合非常强大 |
Phalcon 能够与 SQL 和 NoSQL 数据库进行映射。这是借助 NoSQL 数据库的对象文档映射器 (ODM) 和 SQL 数据库的对象关系映射器 (ORM) 实现的。
在 Phalcon 中,ORM 概念包括创建与给定表名关联的模型,正如我们在前面章节中看到的那样。它遵循所有引用完整性约束。
对象文档映射器 (ODM)
它是与 NoSQL 数据库关联的对象。顾名思义,它映射文档相关模块。 Phalcon 使用它来映射 MongoDB 等数据库。
示例
步骤 1 − 创建一个名为 "test" 的 MongoDB 数据库。我们将使用此数据库进行映射并获得适当的响应。


步骤 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 中配置项目,包括数据库连接。
// 简单的数据库连接到本地主机 $di->set( "mongo", function () { $mongo = new MongoClient(); return $mongo->selectDB("test"); }, true ); // 连接到域套接字,回退到本地主机连接 $di->set( "mongo", function () { $mongo = new MongoClient( "mongodb:///tmp/mongodb-27017.sock,localhost:27017" ); return $mongo->selectDB("test"); }, true );
步骤 5 − 在 TestController.php 的帮助下打印与 ObjectId 相关的值。
<?php use Phalcon\Mvc\Controller; class TestController extends Controller { public function index() { // 查找 _id = "5087358f2d42b8c3d15ec4e2" 的记录 $test = Test::findById("5819ab6cfce9c70ac6087821"); echo $test->data; } }
输出将显示与 objectId 匹配的数据。如果 objectId 与文档中的记录不匹配,则不会显示相应的输出,因为已获取记录数。
