फाल्कन - क्वेरी भाषा

फाल्कन क्वेरी लैंग्वेज (PHQL) को भी कहा जाता है PhalconQL एक उच्च स्तरीय एसक्यूएल बोली है जो फाल्कन द्वारा समर्थित डेटाबेस सिस्टम के लिए एसक्यूएल प्रश्नों का मानकीकरण करती है।

इसमें एक पार्सर शामिल है, जो सी में लिखा गया है, जो लक्ष्य आरडीबीएमएस में वाक्यविन्यास का अनुवाद करता है।

यहाँ फाल्कन क्वेरी भाषा की कुछ प्रमुख विशेषताओं की सूची दी गई है -

  • वेब एप्लिकेशन की सुरक्षा के लिए, यह बाध्य मापदंडों का उपयोग करता है।

  • टेबल्स को मॉडल के रूप में माना जाता है जबकि कॉलम को क्लास की विशेषताओं के रूप में माना जाता है।

  • डेटा हानि को रोकने के लिए सभी डेटा हेरफेर स्टेटमेंट्स का उपयोग किया जाता है।

  • SQL क्वेरी को एक बार में SQL क्वेरी कॉल रखने से रोका जाता है।

PHQL क्वेरी बनाना

क्वैश्चिंग क्लास द्वारा क्वैरी बनाई जाती हैं Phalcon\Mvc\Model\Query

उदाहरण

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

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

पिछले अध्यायों में, हमने ब्लॉग ट्यूटोरियल नाम के मचान वेब एप्लिकेशन का काम देखा है। इसमें नाम या स्लग के अनुसार खोज श्रेणियां शामिल थीं।

निम्नलिखित खोज के लिए शामिल कोड है।

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); 
}

नियंत्रक में निष्पादित (हाइलाइट) PHQL क्वेरी खोज स्थिति के अनुसार सभी परिणाम लाएगा। स्क्रीनशॉट के अनुसार किसी भी खोज क्वेरी का परिणाम स्क्रीनशॉट में प्रदर्शित किया जाएगा।

निम्नलिखित कोड के सफल निष्पादन पर प्राप्त आउटपुट है।

PHQL जीवन चक्र

उच्च-स्तरीय भाषा होने के नाते, पीएचक्यूएल डेवलपर्स को आवश्यकताओं के अनुसार विभिन्न पहलुओं को निजीकृत और अनुकूलित करने की क्षमता प्रदान करता है।

फाल्कन में निष्पादित प्रत्येक PHQL बयान का जीवन चक्र निम्नलिखित है -

  • हर PHQL स्टेटमेंट को पार्स और इंटरमीडिएट रिप्रेजेंटेशन (IR) के रूप में परिवर्तित किया जाता है, जो डेटाबेस सिस्टम द्वारा कार्यान्वित SQL से पूरी तरह स्वतंत्र होता है।

  • IR को डेटाबेस सिस्टम के अनुसार SQL स्टेटमेंट में परिवर्तित किया जाता है जो वेब एप्लिकेशन में उपयोग किया जाता है। उत्पन्न एसक्यूएल बयान मॉडल के साथ जुड़े हुए हैं।

  • सभी PHQL बयानों को एक बार पार्स किया जाता है और मेमोरी में कैश किया जाता है। यदि एक ही कथन परिणाम निष्पादित किया जाता है, तो यह तेज प्रदर्शन में मदद करेगा।