Phalcon - Trình lập bản đồ tài liệu đối tượng

Trước khi bắt đầu với các khái niệm về Object Relational Mapper (ORM) và Object Document Mapper (ODM), điều quan trọng là phải hiểu sự khác biệt giữa cơ sở dữ liệu SQL và NoSQL.

Bảng sau đây nêu bật sự khác biệt giữa SQL và NoSQL:

SQL NoSQL
Chúng cũng được gọi là Cơ sở dữ liệu quan hệ (RDBMS) Chúng được gọi là cơ sở dữ liệu phi quan hệ hoặc phân tán
Cấu trúc của cơ sở dữ liệu được cấu thành dưới dạng bảng và khung nhìn Nó bao gồm cơ sở dữ liệu dựa trên tài liệu và đồ thị
Nó bao gồm một lược đồ được xác định trước Nó có một lược đồ động
Nó rất mạnh mẽ để xác định và thao tác dữ liệu Nó mạnh mẽ trong việc duy trì dữ liệu dưới dạng thu thập tài liệu

Phalcon có khả năng ánh xạ với cơ sở dữ liệu SQL và NoSQL. Điều này đạt được với sự trợ giúp của Object Document Mapper (ODM) cho cơ sở dữ liệu NoSQL và Object Relational Mapper (ORM) cho cơ sở dữ liệu SQL.

Trong Phalcon, khái niệm ORM bao gồm việc tạo một mô hình được liên kết với tên bảng đã cho như chúng ta đã thấy trong các chương trước. Nó tuân theo tất cả các ràng buộc toàn vẹn tham chiếu.

Đối tượng lập bản đồ tài liệu (ODM)

Nó là một đối tượng được liên kết với cơ sở dữ liệu NoSQL. Như tên cho thấy nó ánh xạ mô-đun liên quan đến tài liệu. Phalcon sử dụng nó để lập bản đồ với các cơ sở dữ liệu như MongoDB.

Thí dụ

Step 1 - Tạo cơ sở dữ liệu MongoDB có tên “test”. Chúng tôi sẽ sử dụng cơ sở dữ liệu này để lập bản đồ và nhận được phản hồi thích hợp.

Step 2- Kiểm tra các bản ghi đã chèn trong cơ sở dữ liệu. Lệnh liên quan đến nó là -

db.collection.find()

Có thể thấy rằng mọi tài liệu đều được ánh xạ với ObjectId, đây là một tính năng của ODM. Giá trị củaObjectId là duy nhất và sau này được sử dụng để tìm nạp tất cả dữ liệu được lưu trữ liên quan đến Id cụ thể đó.

Step 3- Thiết lập mô hình cho cơ sở dữ liệu đã tạo. Mô hình là một lớp mở rộngPhalcon\Mvc\Collection. Test.php mô hình sẽ bao gồm mã sau.

<?php 
use Phalcon\Mvc\Collection;  

class Test extends Collection { 
   public function initialize() { 
      $this->setSource("test"); 
   } 
}

Step 4 - Cấu hình dự án bao gồm kết nối cơ sở dữ liệu trong 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 
);

Step 5 - In các giá trị liên quan đến ObjectId với sự giúp đỡ của TestController.php.

<?php  

use Phalcon\Mvc\Controller;  

class TestController extends Controller { 
   public function index() { 
      // Find record with _id = "5087358f2d42b8c3d15ec4e2" 
      $test = Test::findById("5819ab6cfce9c70ac6087821"); 
      echo $test->data; 
   } 
}

Đầu ra sẽ hiển thị dữ liệu khớp với objectId. Nếu objectId không được khớp theo các bản ghi trong tài liệu, thì kết quả đầu ra thích hợp sẽ không được hiển thị khi số lượng bản ghi được tìm nạp.