Phalcon - Bahasa Query
Phalcon Query Language (PHQL) juga disebut sebagai PhalconQL adalah dialek SQL tingkat tinggi yang menstandarkan kueri SQL untuk sistem basis data yang didukung oleh Phalcon.
Ini termasuk parser, ditulis dalam C, yang menerjemahkan sintaks dalam RDBMS target.
Berikut adalah daftar dari beberapa fitur utama dari bahasa query Phalcon -
Untuk keamanan aplikasi web menggunakan parameter terikat.
Tabel diperlakukan sebagai model sedangkan kolom diperlakukan sebagai atribut kelas.
Semua pernyataan manipulasi data digunakan untuk mencegah kehilangan data yang dapat terjadi.
Injeksi SQL dicegah dengan menyimpan panggilan kueri SQL satu per satu.
Membuat Query PHQL
Kueri dibuat dengan membuat instance kelas Phalcon\Mvc\Model\Query.
Contoh
// Instantiate the Query
$query = new Query(
"SELECT * FROM Users",
$this->getDI()
);
// Execute the query returning a result if any
$cars = $query->execute();
Pada bab sebelumnya, kita telah melihat cara kerja aplikasi web scaffold bernama tutorial blog. Itu termasuk kategori pencarian sesuai nama atau siput.
Berikut adalah kode yang disertakan untuk searchAction.
public function searchAction() {
$numberPage = 1;
if ($this->request->isPost()) {
$query = Criteria::fromInput($this->di, "Categories", $_POST);
$this->session->conditions = $query->getConditions();
} else {
$numberPage = $this->request->getQuery("page", "int");
if ($numberPage <= 0) {
$numberPage = 1;
}
}
$parameters = array();
if ($this->session->conditions) {
$parameters["conditions"] = $this->session->conditions;
}
// $parameters["order"] = "id";
$categories = Categories::find($parameters);
if (count($categories) == 0) {
$this->flash->notice("The search did not find any categories");
return $this->dispatcher->forward(array(
"controller" => "categories",
"action" => "index"
));
}
$paginator = new \Phalcon\Paginator\Adapter\Model(array(
"data" => $categories,
"limit"=> 10,
"page" => $numberPage
));
$page = $paginator->getPaginate();
$this->view->setVar("page", $page);
}
Kueri PHQL yang dieksekusi (disorot) di pengontrol akan mengambil semua hasil sesuai kondisi pencarian. Hasil dari setiap permintaan pencarian sesuai kondisi akan ditampilkan seperti pada tangkapan layar.
Berikut ini adalah keluaran yang diterima dari eksekusi yang berhasil dari kode di atas.
Siklus Hidup PHQL
Menjadi bahasa tingkat tinggi, PHQL memberikan kemampuan kepada pengembang untuk mempersonalisasi dan menyesuaikan berbagai aspek sesuai kebutuhan.
Berikut adalah siklus hidup dari setiap pernyataan PHQL yang dijalankan di Phalcon -
Setiap pernyataan PHQL diurai dan diubah sebagai Representasi Menengah (IR) yang sepenuhnya independen dari SQL yang diimplementasikan oleh sistem database.
IR diubah menjadi pernyataan SQL sesuai dengan sistem database yang digunakan dalam aplikasi web. Pernyataan SQL yang dihasilkan dikaitkan dengan model.
Semua pernyataan PHQL diurai sekali dan di-cache di memori. Jika hasil pernyataan yang sama dijalankan, itu akan membantu dalam kinerja yang lebih cepat.