MVC (Model View Controller) Architecture में Database से data लाने के लिए या फिर database में insert, update और delete करने के लिए हमें एक ऐसे function को call करने की जरुरत पड़ती है जो की database से interact करने में मदद करता हो| MVC architecture में Model database से interact करने का कार्य करता है| (CodeIgniter 3 में Model कैसे बनायें?
आज के इस tutorial में हम सीखेंगे की CodeIgniter 3 में model का इस्तेमाल कैसे किया जाता है| इसे किस प्रकार से load किया जाता है और इसके functions को किस प्रकार से कॉल किया जाता है|
MVC क्या है? Model क्या होता है – What is Model in MVC?
MVC का full form “Model View Controller” होता है| यह एक software designing pattern है और इसे user interface बनाने के लिए इस्तेमाल किया जाता है| इसमें programming logic लिखने के तरीके को तीन हिस्सों में बाँट दिया गया है इसलिए इसे MVC कहा जाता है|
चलिए MVC का एक real life example देखते हैं| यहाँ पर मैं एक restaurant का example लेता हूँ|
जब आप Restaurant जाते हैं तो आपके सामने आपके table पर menu card होता है|यहाँ पर menu card view है जो की आपको दिख रहा है| जहाँ से देखकर के आप order करेंगे that means request send करेंगे| ठीक उसी प्रकार View में user interface के code लिखे होते हैं जो की user के browser में यानि की user end में screen पर show होते हैं|
अब जब आपका अपने choice के आइटम select कर लेते हैं तो आप किसी वेटर को call करते हैं that means बुलाते हैं वो आपके selected आइटम को accept करता है और फिर उसे Kitchen तक पहुँचाता है यहाँ पर Waiter एक controller है जो की Kitchen और कस्टमर के बीच में request और response को control करता है| ठीक उसी प्रकार MVC में controller आपके request को Model तक पहुँचाता है और फिर View में आपके response को show करता है|
उसके बाद जब आपका order Kitchen तक पहुँच जाता है तो फिर Cook आपके selected आइटम के लिए required material अपने store से लाता है और फिर आपके लिए भोजन तैयार करता है| यहाँ पर Store database का काम कर रहा है जो की data को store करने का काम कर रहा है| और Cook एक model के जैसा है जो की आपके store से raw material लाकर के आपके लिए भोजन तैयार करता है है ठीक उसी प्रकार Model database से data को लाकर के logical calculation के साथ आपके data को prepare करता है|
अब जिस रास्ते से Waiter kitchen तक data पहुँचाया और जिस रास्ते से आपके order को लेकर के आया उसे Route कहते हैं| Programming में भी route का कार्य रास्ता बनाना होता है|
Model MVC का एक part होता है जो की database से interaction करने का कार्य करता है और उसके साथ साथ data को लाकर के कुछ logical कैलकुलेशन perform करता है और फिर उसे Controller के माध्यम से view तक पहुँचाता है| जिस प्रकार kitchen में कैसे process हुआ उसकी जानकारी customer को नहीं होती है ठीक उसी प्रकार end user को model में कैसे calculation हो रहा है उसकी जानकारी नहीं होती है|
CodeIgniter 3 में model कैसे create करते हैं?
CodeIgniter 3 में Model को store करने के लिए एक separate area बनाया गया है जो की application folder के अन्दर model folder होता है| application/model
इस model folder के अन्दर हम अपने model create कर सकते हैं| एक simple model के code निचे दिए गए हैं|
Model_Name.php
<?php
class Model_Name extends CI_Model
{
public function __construct()
{
parent::__construct();
}
}
आप जब भी model बनायेंगे तो आपको class का नाम और उसका file का नाम दोनों same रखना होगा इससे आप इस model को कहीं पर भी आसानी से load कर सकते हैं| एक बात का हमेशा ध्यान रखें की class का first letter हमेशा capital होना चाहिए और साथ ही साथ class का नाम और उस file का नाम दोनों same होना चाहिए|
जैसे अगर आपके class का नाम Model_Name.php है तो आपके file का नाम भी Model_Name.php होना चाहिए|
आप जब भी model बनायेंगे तो आपको CodeIgniter के built-in model (पहले से बने हुए model) को extend करना होगा| CodeIgniter 3 में built-in model CI_Model है| इसे extend करने से इसके सारे functionality को हम $this variable के साथ आसानी से इस्तेमाल कर सकते हैं|
Model को Load कैसे करें – Loading a model
अब आप अपने बनाये हुए model को कहीं पर भी load करके उसके functionality को इस्तेमाल कर सकते हैं| सबसे पहले हम model load करने के तरीके देखते हैं उसके बाद हम model में function बनाने के तरीके और उसको कॉल करने के तरीके देखेंगे|
Model को आप अपने जरुरत के अनुसार Controller में load कर सकते हैं उसके लिए आपको कुछ इस प्रकार के code लिखने होंगे|
$this->load->model('Model_Name');
अगर आपका model किसी दूसरे directory में हैं तो आपको उस directory का full path देना होगा जैसे यहाँ पर मैं model को application/models/mymodel directory के अन्दर रख रहा हूँ तो मुझे इसका full path देना होगा| Generally जब हम $this->load->model लिखते हैं तो वह automatic application/model का path set कर लेता है अगर उसके अन्दर हमें कोई और folder में अपने model को रखना है तो हमें कुछ इस प्रकार से path देना होगा और उसे load करना होगा|
$this->load->model('mymodel/Model_Name');
जब आपका model name बहुत बड़ा हो और आप उसे access किसी छोटे word से करना चाहते हैं तो उसके लिए आपको Alias बनाना होगा| Programming में एक मेमोरी location को किसी दूसरे नाम से access करने के लिए हमें alias बनाना पड़ता है|
जिस प्रकार किसी भी इंसान का Official नाम कुछ और होता है लेकिन उसका पुकारू नाम that means घर का नाम कुछ और होता है| घर का नाम कुछ और होने के पीछे सबसे बड़ा reason यह है की लोग उसे आसानी से बुला सकें| ठीक उसी प्रकार programming में भी होता है|
Model को load करते समय उसका alias कुछ इस प्रकार से बना सकते हैं|
$this->load->model('mymodel/Model_Name', 'aliasname');
$this->load->model('Model_Name', 'myalias');
ऊपर के code में हमें दो model को load करके दोनों को अलग अलग alias बनाया है| पहला model हमें उसको load किया है जो की custom directory (user के द्वारा बनाया गया directory) के अन्दर है| और दूसरा वो model को load किया जो की direct model folder के अन्दर store है|
Model load करने का दूसरा और सबसे आसान method है autoload.php इस file के द्वारा आप अपने models को एक ही बार load कर सकते हैं आपको हर controller में load करने की जरुरत नहीं पड़ेगी| autoload.php file में जितने भी file name add किये जाते हैं वो हमेशा project start होते समय ही load हो जाते हैं जिससे project का performance better होता है|
autoload.php application folder के अन्दर config folder में available रहता है| Model load करने के लिए सबसे पहले autoload.php file को open कीजिये और फिर सबसे निचे model index में अपने model को add कीजिये| जैसे की
$autoload['model'] = array('Model_Name'); //without subfolder
$autoload['model'] = array('mymodel/Model_Name'); //with subfolder
$autoload['model'] = array('mymodel/Model_Name' => 'aliasname'); //with alias
ऊपर दिए गए code में से किन्ही एक तरीके को आप choose करें|
Connecting to database
केवल Model बनने के बाद उसमें आप database से related work नहीं कर सकते हैं| Database से connect करने के लिए आपको database library को load करना होगा| database library CodeIgniter का pre-defined library है जिसको इस्तेमाल करने से पहले आपको load करना होगा|
जिस प्रकार हमें model को autoload.php file में load किया ठीक उसी प्रकार आप database को load कर सकते हैं लेकिन database एक library है इसलिए इसे libraries index में add करना होगा| जैसे की
$autoload['libraries'] = array('database');
दूसरा तरीका जिससे आप अलग अलग controller में इस्तेमाल कर सकते हैं that means controller files में load करने के लिए निचे दिए गए code को controller में लिखना होगा| यह manual तरीका है database को load करना का|
$this->load->database();
अब उसके बाद आपको database configuration करना होगा जो की आपको config folder के अन्दर database.php में change करना होगा| इसके बारे में दूसरे tutorial में हम पढेंगे|
Model के function को controller से कैसे कॉल करें – call model function to controller function
Model के function को controller के function से call करने के लिए सबसे पहले आपको model load करना होगा जो की ऊपर बताये गये हैं उसके बाद आपको controller के function में कुछ इस प्रकार के code लिखने होंगे जैसे की
$this->Model_Name->getData();
Model के class में एक getData() नाम का function बना हुआ होगा जो की Model_Name model के अन्दर होगा| उसे हम किसी भी controller से call कर सकते हैं लेकिन उससे पहले model load होना जरुरी है|
Read also:
- CodeIgniter 3 कैसे install करें?
- CodeIgniter 3 MVC Architecture
- CodeIgniter 3 Folder structure
- CodeIgniter में Ajax का इस्तेमाल करके database में data कैसे insert करें
- CodeIgniter 3 और Ajax का इस्तेमाल करके datatable में data कैसे show करें?
External sources of real-life example: C-sharp corner
BrianHourn says
Many thanks, this site is extremely practical.