- Phalcon 教程
- Phalcon - 首页
- Phalcon - 概述
- Phalcon - 环境设置
- Phalcon - 应用结构
- Phalcon - 功能
- Phalcon - 配置
- Phalcon - 控制器
- Phalcon - 模型
- Phalcon - 视图
- Phalcon - 路由
- Phalcon - 数据库连接
- Phalcon - 切换数据库
- Phalcon - 脚手架应用程序
- Phalcon - 查询语言
- Phalcon - 数据库迁移
- Phalcon - Cookie 管理
- Phalcon - Session 管理
- Phalcon - 多语言支持
- Phalcon - 资源管理
- Phalcon - 使用表单
- Phalcon - 对象文档映射器
- Phalcon - 安全特性
- Phalcon 有用资源
- Phalcon - 快速指南
- Phalcon - 有用资源
- Phalcon - 讨论
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 中配置项目,包括数据库连接。
// 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 打印值。
<?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 与文档中的记录不匹配,则不会显示相应的输出,因为获取的记录数量是有限的。
广告