在开始使用对象关系映射器(ORM)和对象文档映射器(ODM)的概念之前,了解SQL和NoSQL数据库之间的区别非常重要.
下表突出显示了SQL和NoSQL之间的区别 :
SQL | NoSQL |
---|---|
它们也被称为关系数据库(RDBMS) | 它们被称为非关系数据库或分布式数据库 |
数据库结构构成表和视图 | 它由基于文档和图形数据库组成 |
它包含一个预定义的架构 | 它有一个动态架构 |
它非常强大,用于定义和操作数据 | 它在将数据维护为集合方面非常强大文件 |
Phalcon能够使用SQL和NoSQL数据库进行映射.这是在NoSQL数据库的Object Document Mapper(ODM)和SQL数据库的Object Relational Mapper(ORM)的帮助下实现的.
在Phalcon中,ORM概念包括创建与之关联的模型我们在前面章节中看到的给定表名.它遵循所有参照完整性约束.
对象文档映射器(ODM)
它是与NoSQL数据库关联的对象.顾名思义,它映射了与文档相关的模块. Phalcon使用它来映射像MongoDB这样的数据库.
示例
步骤1 : 创建一个名为"test"的MongoDB数据库.我们将使用此数据库进行映射并获得相应的响应.
第2步 : 检查数据库中插入的记录.与之关联的命令是 :
db.collection.find()
观察到每个文件与ObjectId映射,这是ODM的一个特性. ObjectId 的值是唯一的,稍后用于获取与该特定Id相关的所有数据.
第3步 : 去;为创建的数据库设置模型.模型是一个扩展 Phalcon\Mvc\Collection 的类. Test.php 模型将包含以下代码.
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步 : 借助 TestController.php 打印关于 ObjectId 的值.
data; } }
输出将显示与objectId匹配的数据.如果objectId未按照文档中的记录进行匹配,则在获取记录数时不会显示相应的输出.