Phalcon - Nesne Belge Eşleştiricisi
Kavramlarına başlamadan önce Object Relational Mapper (ORM) ve Nesne Belge Eşleyici (ODM), SQL ve NoSQL veritabanları arasındaki farkı anlamak önemlidir.
Aşağıdaki tablo SQL ve NoSQL arasındaki farkları vurgular -
SQL | NoSQL |
---|---|
İlişkisel Veritabanları (RDBMS) olarak da adlandırılırlar | İlişkisel olmayan veya dağıtılmış veritabanı olarak adlandırılırlar |
Veritabanının yapısı tablolar ve görünümler olarak oluşturulur | Belge tabanlı ve grafik veri tabanlarından oluşur |
Önceden tanımlanmış bir şema içerir | Dinamik bir şemaya sahiptir |
Verileri tanımlamak ve işlemek için çok güçlüdür | Belgelerin toplanması olarak verileri korumada güçlüdür |
Phalcon, SQL ve NoSQL veritabanları ile eşleştirme yeteneğine sahiptir. Bu, NoSQL veritabanı için Object Document Mapper (ODM) ve SQL veritabanı için Object Relational Mapper (ORM) yardımıyla sağlanır.
Phalcon'da ORM kavramı, önceki bölümlerde gördüğümüz gibi, verilen tablo adı ile ilişkili bir model oluşturmayı içerir. Tüm referans bütünlük kısıtlamalarına uyar.
Nesne Belge Eşleştiricisi (ODM)
NoSQL veritabanı ile ilişkili bir nesnedir. Adından da anlaşılacağı gibi, belgeyle ilgili modülü eşler. Phalcon, MongoDB gibi veri tabanlarıyla eşleştirmek için bunu kullanır.
Misal
Step 1 - adlı MongoDB veritabanı oluşturun “test”. Bu veri tabanını eşleştirmek ve uygun yanıtı almak için kullanacağız.
Step 2- Veritabanına eklenen kayıtları kontrol edin. Onunla ilişkili komut -
db.collection.find()
Her belgenin ODM'nin bir özelliği olan ObjectId ile eşlendiği görülmüştür. DeğeriObjectId benzersizdir ve daha sonra bu belirli Id'ye göre depolanan tüm verileri almak için kullanılır.
Step 3- Oluşturulan veritabanı için model ayarlayın. Model, genişleyen bir sınıftır.Phalcon\Mvc\Collection. Test.php model aşağıdaki kodu içerecektir.
<?php
use Phalcon\Mvc\Collection;
class Test extends Collection {
public function initialize() {
$this->setSource("test");
}
}
Step 4 - Veri tabanı bağlantısı dahil olmak üzere projeyi yapılandırın 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 - Değerleri aşağıdakilere göre yazdırın ObjectId yardımıyla 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;
}
}
Çıktı, objectId ile eşleşen verileri gösterecektir. ObjectId, belgelerdeki kayıtlara göre eşleşmezse, kayıt sayısı getirilirken uygun çıktı görüntülenmeyecektir.