Phalcon - Langage de requête

Phalcon Query Language (PHQL) également appelé PhalconQL est un dialecte SQL de haut niveau qui standardise les requêtes SQL pour les systèmes de base de données pris en charge par Phalcon.

Il inclut un analyseur, écrit en C, qui traduit la syntaxe du SGBDR cible.

Voici une liste de certaines des principales fonctionnalités du langage de requête Phalcon -

  • Pour la sécurité de l'application Web, il utilise des paramètres liés.

  • Les tableaux sont traités comme des modèles tandis que les colonnes sont traitées comme des attributs de classe.

  • Toutes les instructions de manipulation de données sont utilisées pour empêcher la perte de données qui peut se produire.

  • L'injection SQL est empêchée en conservant l'appel de requête SQL un à la fois.

Créer une requête PHQL

Les requêtes sont créées par une classe d'instanciation Phalcon\Mvc\Model\Query.

Exemple

// Instantiate the Query 
$query = new Query( 
   "SELECT * FROM Users", 
   $this->getDI() 
);  

// Execute the query returning a result if any 
$cars = $query->execute();

Dans les chapitres précédents, nous avons vu le fonctionnement de l'application Web d'échafaudage nommée tutoriel de blog. Il comprenait des catégories de recherche selon le nom ou le slug.

Voici le code inclus pour 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); 
}

La requête PHQL exécutée (en surbrillance) dans le contrôleur récupérera tous les résultats selon la condition de recherche. Le résultat de toute requête de recherche selon la condition sera affiché comme dans la capture d'écran.

Voici la sortie reçue lors de l'exécution réussie du code ci-dessus.

Cycle de vie PHQL

Étant un langage de haut niveau, PHQL offre la possibilité aux développeurs de personnaliser et de personnaliser divers aspects selon les besoins.

Voici le cycle de vie de chaque instruction PHQL exécutée dans Phalcon -

  • Chaque instruction PHQL est analysée et convertie en tant que représentation intermédiaire (IR) qui est complètement indépendante du SQL implémenté par le système de base de données.

  • L'IR est converti en instruction SQL selon le système de base de données utilisé dans l'application Web. Les instructions SQL générées sont associées au modèle.

  • Toutes les instructions PHQL sont analysées une fois et mises en cache dans la mémoire. Si le même résultat de l'instruction est exécuté, cela contribuera à des performances plus rapides.