Codeइग्नाइटर एक्टिव रिकॉर्ड: सम्मिलित करें, चुनें, अपडेट करें, हटाएं

डेटा अधिकांश अनुप्रयोगों का मूल है। डेटा को इस तरह से संग्रहीत किया जाना चाहिए कि इसका आगे विश्लेषण किया जा सके ताकि अंतर्दृष्टि प्रदान की जा सके और व्यावसायिक निर्णय लेने में सुविधा हो। डेटा आमतौर पर डेटाबेस में संग्रहीत किया जाता है। डेटाबेस के साथ बातचीत करते समय मुख्य चिंताओं में सुरक्षा, पहुँच में आसानी और संरचित क्वेरी भाषा (SQL) के डेटाबेस विक्रेता विशिष्ट कार्यान्वयन शामिल हैं।

सक्रिय रिकॉर्ड एक डिज़ाइन पैटर्न है जो डेटाबेस के साथ सहज, सुरक्षित और स्पष्ट तरीके से बातचीत करना आसान बनाता है।

सक्रिय रिकॉर्ड के निम्नलिखित लाभ हैं

  • सक्रिय रिकॉर्ड की सरल विधि श्रृंखलाओं के साथ रिकॉर्ड डालें, अपडेट करें और हटाएं
  • पैरामीटर का उपयोग करके उपयोगकर्ता इनपुट को सुरक्षित तरीके से सबमिट करता है
  • आपको कई डेटाबेस इंजनों के साथ काम करने की अनुमति देता है जैसे MySQL, SQL सर्वर, आदि अनुप्रयोग कोड को पुनः लिखे बिना
  • CodeIgniter पृष्ठभूमि में प्रत्येक डेटाबेस इंजन के लिए विशिष्ट ड्राइवरों का उपयोग करता है।

सक्रिय रिकॉर्ड का उपयोग कैसे करें: उदाहरण

इस ट्यूटोरियल में, हम ट्यूटोरियल डेटाबेस पर चर्चा करेंगे। हमारे पास दो टेबल होंगी, एक में ऑर्डर और दूसरी में विवरण।

यह ट्यूटोरियल मानता है कि आपके पास MySQL डेटाबेस स्थापित और चल रहा है.

ट्यूटोरियल डेटाबेस बनाने के लिए निम्नलिखित स्क्रिप्ट चलाएँ:

CREATE SCHEMA ci_active_record;

USE ci_active_record;

CREATE TABLE `order_details` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `item` varchar(245) DEFAULT NULL,
  `quantity` int(11) DEFAULT '0',
  `price` decimal(10,2) DEFAULT '0.00',
  `sub_total` decimal(10,2) DEFAULT '0.00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` timestamp NULL DEFAULT NULL,
  `customer_name` varchar(245) DEFAULT NULL,
  `customer_address` varchar(245) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT = 1;

उपरोक्त कोड ci_active_record नामक डेटाबेस बनाता है और orders तथा order_details नामक दो टेबल बनाता है। दो टेबल के बीच संबंध orders में कॉलम id तथा order_details टेबल में order_id द्वारा परिभाषित किया जाता है।

Codeइग्नाइटर डेटाबेस कॉन्फ़िगरेशन

अब हम अपने एप्लिकेशन को इस डेटाबेस के साथ संचार करने में सक्षम बनाने के लिए कॉन्फ़िगर करेंगे।

application/config/database.php में स्थित डेटाबेस कॉन्फ़िगरेशन फ़ाइल खोलें

कॉन्फ़िगरेशन फ़ाइल में निम्न पंक्तियाँ खोजें

'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',

उपरोक्त कोड को निम्न प्रकार से अपडेट करें

'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'letmein',
	'database' => 'ci_active_record',

नोट: आपको उपयोगकर्ता नाम और पासवर्ड को अपने कॉन्फ़िगरेशन से मेल खाने वाले लोगों को बदलने की आवश्यकता होगी MySQL.

डेटाबेस कॉन्फ़िगरेशन विवरण के अलावा, हमें यह भी बताना होगा Codeइग्नाइटर डेटाबेस लाइब्रेरी को लोड करते समय उसे लोड करेगा

चरण 1) निम्न फ़ाइल application/config/autoload.php खोलें

चरण 2) $autoload सरणी कुंजी लाइब्रेरीज़ का पता लगाएँ और डेटाबेस लाइब्रेरी को नीचे दिखाए अनुसार लोड करें

$autoload['libraries'] = array('database');

यहाँ,

  • उपरोक्त कोड एप्लीकेशन शुरू होने पर डेटाबेस लाइब्रेरी को लोड करता है

Codeइग्नाइटर सक्रिय रिकॉर्ड सम्मिलित करें

परीक्षण के प्रयोजनों के लिए, हम एक नियंत्रक और परिभाषित रूट बनाएंगे, जिसका उपयोग हम सक्रिय रिकॉर्ड के माध्यम से अपने एप्लिकेशन के साथ बातचीत करने के लिए करेंगे।

एक नई फ़ाइल application/controllers/ActiveRecordController.php बनाएँ

ActiveRecordController.php में निम्न कोड जोड़ें

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ActiveRecordController extends CI_Controller {
    public function store_order(){
        $data = [
            'date' => '2018-12-19',
            'customer_name' => 'Joe Thomas',
            'customer_address' => 'US'
        ];

        
        $this->db->insert('orders', $data); 

        echo 'order has successfully been created';
    }
}

यहाँ,

  • $data = […] एक सरणी चर डेटा को परिभाषित करता है जो डेटाबेस तालिका नामों को सरणी कुंजी के रूप में उपयोग करता है और उन्हें मान प्रदान करता है
  • $this->db->insert('orders', $data); डेटाबेस लाइब्रेरी की insert विधि को कॉल करता है, टेबल नाम orders और array variable $data को पैरामीटर के रूप में पास करता है। यह लाइन array keys को फ़ील्ड नाम के रूप में और array values ​​को डेटाबेस में डाले जाने वाले मानों के रूप में उपयोग करके SQL INSERT कथन उत्पन्न करती है।

अब जबकि हमने सक्रिय रिकॉर्ड के लिए नियंत्रक विधि सफलतापूर्वक बना ली है, अब हमें एक रूट बनाना होगा जिसे हम नियंत्रक विधि को निष्पादित करने के लिए कॉल करेंगे।

अब application/config/routes.php में route.php खोलें

मार्गों में निम्न पंक्ति जोड़ें

$route['ar/insert'] = 'activerecordcontroller/store_order';

यहाँ,

  • हम एक रूट ar/insert परिभाषित करते हैं जो ActiveRecordController के store_order को कॉल करता है।

आइए अब अपनी विधि का परीक्षण करने के लिए वेब सर्वर प्रारंभ करें।

PHP के लिए अंतर्निहित सर्वर प्रारंभ करने के लिए निम्न आदेश चलाएँ

cd C:\Sites\ci-app
php -S localhost:3000

यहाँ,

  • उपरोक्त कमांड ब्राउज़र को कमांड लाइन पर ले जाता है और पोर्ट 3000 पर अंतर्निहित सर्वर शुरू करता है।

अपने ब्राउज़र में निम्न URL लोड करें

http://localhost:3000/ar/insert

आपको निम्नलिखित परिणाम मिलेंगे

order has successfully been created

ओपन MySQL ट्यूटोरियल डेटाबेस और ऑर्डर तालिका की जाँच करें

आप नीचे दी गई छवि में दिखाए अनुसार नई पंक्ति बना सकेंगे

Codeइग्नाइटर सक्रिय रिकॉर्ड सम्मिलित करें

Codeइग्नाइटर सेलेक्ट एक्टिव रिकॉर्ड

इस अनुभाग में, हम देखेंगे कि डेटाबेस में मौजूद रिकॉर्ड को कैसे पढ़ा जाए और उन्हें वेब ब्राउज़र में अव्यवस्थित सूची के रूप में कैसे प्रदर्शित किया जाए

ActiveRecordController में निम्न विधि जोड़ें

public function index() {
        $query = $this->db->get('orders');
        
        echo "<h3>Orders Listing</h3>";
        echo "<ul>";
        
        foreach ($query->result() as $row) {
            echo "<li>$row->customer_name</li>";
        }
        
        echo "</ul>";
    }

यहाँ,

  • $query = $this->db->get('orders'); सभी फ़ील्ड का चयन करके ऑर्डर तालिका के विरुद्ध चयन क्वेरी चलाता है
  • प्रतिध्वनि “ ऑर्डर लिस्टिंग ”; आकार 4 का HTML शीर्षक प्रदर्शित करता है
  • प्रतिध्वनि “ ”; अ-क्रमित HTML सूची के लिए प्रारंभिक टैग प्रिंट करता है
  • foreach ($query->result() as $row) {…} ने डेटाबेस से लौटे परिणामों के माध्यम से लूप करने के लिए for loop का उपयोग किया। echo “ $ पंक्ति-> ग्राहक_नाम ”; डेटाबेस से customer_name प्रिंट करता है

निम्नलिखित URL लोड करने से पहले, आप डेटाबेस में कुछ और रिकॉर्ड लोड कर सकते हैं।

अब SELECT क्वेरी के लिए रूट परिभाषित करें

application/config/routes.php तालिका खोलें

निम्नलिखित मार्ग जोड़ें

$route['ar'] = 'activerecordcontroller';

यहाँ,

  • रूट ar ActiveRecordController क्लास के इंडेक्स मेथड की ओर इशारा करता है। यह डिफ़ॉल्ट रूप से है, इसलिए हमने इंडेक्स मेथड को निर्दिष्ट नहीं किया है जैसा कि आपने रिकॉर्ड डालने वाले रूट के लिए किया था

मान लें कि वेब सर्वर पहले से चल रहा है, तो निम्न URL लोड करें

http://localhost:3000/ar

आपको अपने वेब ब्राउज़र में निम्नलिखित के समान परिणाम देखने में सक्षम होना चाहिए

Codeइग्नाइटर सेलेक्ट एक्टिव रिकॉर्ड

Codeइग्नाइटर सक्रिय रिकॉर्ड अपडेट करें

इस अनुभाग में, हम डेटाबेस को अपडेट करने के लिए सक्रिय रिकॉर्ड का उपयोग करने के तरीके के बारे में बात करेंगे। मान लीजिए कि हम ग्राहक का नाम जो थॉमस को जो में अपडेट करना चाहते हैं।

ActiveRecordController वर्ग में निम्न विधि जोड़ें

public function update_order() {
        $data = [
            'customer_name' => 'Joe',
        ];
        $this->db->where('id', 1);
        $this->db->update('orders', $data);
        echo 'order has successfully been updated';
    }

यहाँ,

  • $data = […] उन फ़ील्ड और मानों को परिभाषित करता है जिन्हें हम डेटाबेस तालिका में अपडेट करना चाहते हैं
  • $this->db->where('id', 1); अद्यतन क्वेरी का where क्लॉज़ सेट करता है
  • $this->db->update('orders', $data); SQL अद्यतन क्वेरी उत्पन्न करता है और इसे हमारे डेटाबेस के विरुद्ध निष्पादित करता है।

उपरोक्त कोड निम्नलिखित SQL कथन उत्पन्न करेगा

UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

आइए अब route.php application/config/routes.php को अपडेट करें

निम्नलिखित मार्ग जोड़ें

$route['ar/update'] = 'activerecordcontroller/update_order';

परिवर्तनों को सुरक्षित करें

वेब ब्राउज़र में निम्न URL लोड करें

Codeइग्नाइटर सक्रिय रिकॉर्ड अपडेट करें

आइए अब डेटाबेस रिकॉर्ड प्रदर्शित करें और देखें कि क्या परिवर्तन प्रभावित हुए हैं।

Codeइग्नाइटर सक्रिय रिकॉर्ड अपडेट करें

जैसा कि आप ऊपर दी गई छवि में देख सकते हैं, पहला रिकॉर्ड जो थॉमस से जो में अपडेट किया गया है।

Codeइग्नाइटर सक्रिय रिकॉर्ड हटाएं

अब हम डेटाबेस से एक रिकॉर्ड हटाएँगे। हम 3 आईडी वाले रिकॉर्ड को हटाएँगे।

ActiveRecordController में निम्न विधि जोड़ें

public function delete_order() {
        $this->db->where('id', 3);
        $this->db->delete('orders');

        echo 'order has successfully been deleted';
    }

यहाँ,

  • $this->db->where('id', 1); where क्लॉज़ सेट करता है
  • $this->db->delete('orders'); where खण्ड का उपयोग करके निर्धारित मापदंड के आधार पर orders तालिका में डेटाबेस पंक्ति को हटाता है।

उपरोक्त कोड को निष्पादित करने के लिए, हमारे वेब ब्राउज़र में निम्न URL लोड करें

http://localhost:3000/ar/delete

सारांश

इस ट्यूटोरियल में, आपने सीखा है कि डेटाबेस से रिकॉर्ड डालने, अपडेट करने, हटाने और चयन करने के लिए सक्रिय रिकॉर्ड के साथ कैसे काम किया जाए। हमने रिकॉर्ड बनाने, अपडेट करने और हटाने के लिए स्थिर मानों के साथ काम किया। अगले ट्यूटोरियल में, हम एक यूजर इंटरफेस बनाएंगे जिसका उपयोग यूजर डेटाबेस में गतिशील रूप से रिकॉर्ड बनाने के लिए कर सकता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: