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 資料庫。我們將使用此資料庫進行對映並獲得相應的響應。

Test

Mongo

步驟 2 - 檢查資料庫中插入的記錄。與之相關的命令是:

db.collection.find() 

Inserted Records

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

Data Display
廣告