
- 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 與文件中的記錄不匹配,則不會顯示相應的輸出,因為獲取的記錄數量是有限的。

廣告