Phalcon - Pemeta Dokumen Objek
Sebelum memulai dengan konsep Object Relational Mapper (ORM) dan Object Document Mapper (ODM), penting untuk memahami perbedaan antara database SQL dan NoSQL.
Tabel berikut menyoroti perbedaan antara SQL dan NoSQL -
SQL | NoSQL |
---|---|
Mereka juga disebut sebagai Relational Databases (RDBMS) | Mereka disebut sebagai database non-relasional atau terdistribusi |
Struktur basis data dibentuk sebagai tabel dan tampilan | Ini terdiri dari database berbasis dokumen dan grafik |
Ini mencakup skema yang telah ditentukan sebelumnya | Ini memiliki skema dinamis |
Ini sangat kuat untuk mendefinisikan dan memanipulasi data | Ini sangat kuat dalam memelihara data sebagai kumpulan dokumen |
Phalcon memiliki kemampuan untuk memetakan dengan database SQL dan NoSQL. Ini dicapai dengan bantuan Object Document Mapper (ODM) untuk database NoSQL dan Object Relational Mapper (ORM) untuk database SQL.
Di Phalcon, konsep ORM terdiri dari pembuatan model yang terkait dengan nama tabel yang diberikan seperti yang telah kita lihat di bab sebelumnya. Ini mengikuti semua batasan integritas referensial.
Pemeta Dokumen Objek (ODM)
Ini adalah objek yang terkait dengan database NoSQL. Seperti namanya itu memetakan modul terkait dokumen. Phalcon menggunakannya untuk memetakan dengan database seperti MongoDB.
Contoh
Step 1 - Buat database MongoDB bernama “test”. Kami akan menggunakan database ini untuk memetakan dan mendapatkan respons yang sesuai.
Step 2- Periksa catatan yang dimasukkan dalam database. Perintah yang terkait dengannya adalah -
db.collection.find()
Terlihat bahwa setiap dokumen dipetakan dengan ObjectId yang merupakan fitur ODM. Nilai dariObjectId unik dan nantinya digunakan untuk mengambil semua data yang disimpan sehubungan dengan Id tertentu tersebut.
Step 3- Siapkan model untuk database yang dibuat. Model adalah kelas yang diperluasPhalcon\Mvc\Collection. Test.php model akan menyertakan kode berikut.
<?php
use Phalcon\Mvc\Collection;
class Test extends Collection {
public function initialize() {
$this->setSource("test");
}
}
Step 4 - Konfigurasi proyek termasuk konektivitas database di 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 - Cetak nilai terkait ObjectId dengan bantuan dari 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;
}
}
Outputnya akan menampilkan data yang cocok dengan objectId tersebut. Jika objectId tidak cocok dengan record dalam dokumen, maka keluaran yang sesuai tidak akan ditampilkan saat jumlah record diambil.