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.