CodeIgniter az adatbázissal
Az előző oktatóanyagban bemutattuk a CodeIgniter aktív rekordjának alapjait, valamint a rekordok beillesztésének, frissítésének, törlésének és az adatbázisból történő olvasásának módját. Ebben az oktatóanyagban adatbázis-modelleket hozunk létre, és űrlapokat használunk adatbázis-rekordok létrehozásához és frissítéséhez. Ha még nem ismeri a CodeIgniter adatbázisait, akkor javasolta, hogy olvassa el az előző oktatóanyagot
Adatbázis-konfiguráció
Először a bemutató projekt adatbázisának létrehozásával kezdjük. Létrehozunk egy egyszerű adatbázist az elérhetőségek kezeléséhez. Létrehozunk egy egyszerű adatbázist, amely két (2) táblázatot nevez meg a haverokról és a városokról, amelyekben élnek. A haverok és a városok kapcsolata egy az egyhez, a városokban az elsődleges kulcs az id és a város_azonosító a külföldi kulcs a pals táblákban. .
Futtassa a következő parancsfájlokat az adatbázis létrehozásához:
CREATE TABLE `pals` (`id` int(11) NOT NULL AUTO_INCREMENT,`city_id` int(11) DEFAULT NULL,`contact_name` varchar(245) DEFAULT NULL,`contact_number` varchar(245) DEFAULT NULL,`email_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`));
Most hozzuk létre a városok táblázatot
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
CodeIgniter adatbázis modellek
Most modelleket fogunk létrehozni az adatbázisunkhoz. A modell az MVC M része. A modell az adatokhoz való hozzáféréssel, az adatkezeléssel és az üzleti logikával foglalkozik.
A CodeIgniter programban minden modellnek meg kell határoznia a támogatni kívánt módszereket. Ahelyett, hogy ugyanazt a kódot ismételnénk meg az egyes modellekben, kihasználjuk az öröklést az objektum-orientált programozásban, és létrehozunk egy szülő modellosztályt, amely meghatározza azokat az alapvető módszereket, amelyeket modelljeinknek támogatni kívánunk.
Az alábbi táblázat bemutatja azokat a módszereket, amelyeket meghatározunk, és az adatokhoz való hozzáférés módját.
S / N | Módszer | Leírás |
1 | __konstruálni | Meghatározza azt a konstruktor módszert, amely meghívja a szülő konstruktor metódust |
2 | get_all | Az összes mezőt és rekordot feltétel nélkül lekéri az adatbázisból |
3 | get_by_id | Egyetlen sort kap le az adatbázisból az INT nevű elsődleges kulcs használatával |
4 | get_where | A kritériumok alapján beolvassa az összes mezőt az adatbázisból |
5. | betét | Új rekordot illeszt be az adatbázisba |
6. | frissítés | Létezik egy meglévő adatbázis-rekord az INT nevű elsődleges kulcs alapján |
7 | töröl | Meglévő rekord törlése az adatbázisból az id nevű INT típusú elsődleges kulcs alapján |
A következő kép bemutatja az osztálydiagramot és azt, hogy a Pals and Cities gyermekmodellek hogyan viszonyulnak a BaseModel szülőmodellhez.
Két modellt készítünk a fenti képen leírtak szerint
Hozzon létre egy új osztályt BaseModel az application / models / BaseModel.php fájlban
Adja hozzá a következő kódot
db->get($this->table)->result();}public function get_by_id($id) {return $this->db->get_where($this->table, array('id' => $id))->row();}public function get_where($where) {return $this->db->where($where)->get($this->table)->result();}public function insert($data) {return $this->db->insert($this->table, $data);}public function update($id, $data) {$this->db->where('id', $id);$this->db->update($this->table, $data);}public function delete($id) {$this->db->where('id', $id);$this->db->delete($this->table);}}
ITT,
- védett $ table = ''; definiálja a tábla nevű védett változót. Ezt az adott gyermekosztály tölti ki, hogy meghatározza, melyik táblával kell interakcióba lépnie az alapmodell osztálymódszereinknek.
- a __construct () {függvény public function meghatározza a konstruktor metódust és végrehajtja a CI_Model szülőosztály konstruktor metódusát.
- A get_all () {…} az adatbázis-könyvtárat és a $ tábla változó értékét használja a SELECT lekérdezés futtatásához az adatbázisunkkal.
- A get_by_id ($ id) {…} meghatározza az egyetlen sor lekérésének módszerét az adatbázisból, és elfogadja a $ id paramétert, amelynek INT típusúnak kell lennie.
- get_where ($ where) {…} meghatározza a get metódust, amely lehetővé teszi a hol záradék beállítását.
- insert ($ data) {…} meghatározza a beszúrási módszert, és elfogadja az $ data tömb paramétert, amely tartalmazza az adatbázisba írandó értékeket.
- update ($ id, $ data) {…} meghatározza a frissítési módszert, és elfogadja az $ data tömbparamétert, amely tartalmazza az adatbázisban frissítendő értékeket.
- delete ($ id) {…} meghatározza azt a törlési módszert, amely elfogadja a $ id paraméterét, amelynek INT adattípusúnak kell lennie.
Most, hogy végeztünk a szülő modell osztállyal, létrehozhatjuk Pals modelljeinket
Hozzon létre egy új fájlt az application / models / Pals.php fájlban
Adja hozzá a következő kódot
db->where('pals.id', $id);$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->row();}public function get_all() {$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->result();}}
ITT,
- A Class Pals kiterjeszti a BaseModel-t {…} kiterjeszti a BaseModel szülő modellt, és automatikusan hozzáférhetővé teszi a BaseModelben definiált összes módszert a gyermekosztályhoz.
- védett $ table = 'pals'; meghatározza a szülőmodellünkhöz társított táblázat nevét
- __construct () {…} inicializálja a szülő konstruktort
- a get_by_id ($ id) {…} nyilvános függvény felülírja a get_by_id azonosítót, hogy egyedi megvalósítást biztosítson a Pals modellhez. A get_by_id lekérdezése egy összekapcsolást használ a városnév lekéréséhez a városok táblából
- a get_all () {…} nyilvános függvény felülírja a get_all metódust az összekapcsolási lekérdezés megvalósításához a haverok és a városok között
Hozzon létre egy új fájlt az application / models / Cities.php fájlban
ITT,
- védett $ table = 'városok'; meghatározza a modell adatbázis táblázatot.
Amint az a fenti kódból kiderül, az Örökség sok időt takarít meg nekünk, amikor a CodeIgniter modelljeivel dolgozunk. A következő részben megtanuljuk
Contacts Manager vezérlők
Most, hogy elkészítettük a modelleket, hozzuk létre az alkalmazás vezérlőit. Két vezérlőnk lesz, nevezetesen a Kapcsolatok és a Városok
Kezdjük a városokkal
Hozzon létre egy új fájlt a Cities.php alkalmazás / vezérlők könyvtárban
Adja hozzá a következő kódot
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('cities_model');}public function index() {$header['title'] = 'Cities Listing';$data['pals'] = $this->cities_model->get_all();$this->load->view('header',$header);$this->load->view('cities/index', $data);$this->load->view('footer');}public function create() {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}public function store() {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->insert($data);redirect(base_url('cities'));} else {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}}public function edit($id) {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->update($id,$data);redirect(base_url('cities'));} else {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('cities/create',$data);$this->load->view('footer');}}public function delete($id) {$header['title'] = 'Delete City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/delete', $data);$this->load->view('footer');}public function destroy($id) {$this->cities_model->delete($id);redirect(base_url('cities'));}}
ITT,
- A fenti kód végrehajtja az összes olyan módszert, amelyre szükség van sorok létrehozásához, frissítéséhez, törléséhez és az adatbázis sorainak olvasásához.
Hozzon létre egy másik fájlt a Contacts.php alkalmazásban / vezérlőkben
Adja hozzá a következő kódot
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('pals_model');}public function index() {$header['title'] = 'Contacts List';$data['pals'] = $this->pals_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/index', $data);$this->load->view('footer');}public function create() {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');}public function store() {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->insert($data);redirect(base_url('contacts'));}}public function edit($id) {$this->load->model('cities_model');$header['title'] = 'Edit Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->update($id, $data);redirect(base_url('contacts'));}}public function delete($id) {$this->load->model('cities_model');$header['title'] = 'Delete Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('contacts/delete',$data);$this->load->view('footer');}public function destroy($id){$this->pals_model->delete($id);redirect(base_url('contacts'));}}
Névjegykezelő nézetek
Az előző útmutatókban már megvizsgáltuk az űrlapokat és az érvényesítést a CodeIgniter programban. Az előző oktatóprogramokban kifejlesztett kódot fogjuk használni. A teljesség kedvéért reprodukáljuk az előző oktatóprogramokban létrehozott kódot.
Alkalmazásunk nézetei a következők lesznek
Az alábbi linkre kattintva letöltheti a fenti nézetek kódját
CodeIgniter Contacts Manager Megtekintések Letöltés
Összegzés
Ebben az oktatóanyagban megtudhatja, hogyan hozhat létre modelleket a CodeIgniter alkalmazásban. Kihasználtuk az öröklődést az objektum-orientált programozásban, hogy elősegítsük a kód újrafelhasználhatóságát azáltal, hogy létrehoztunk egy alapmodellt, amely megvalósítja a négy fő adatbázis-műveletet: beszúrást, olvasást, frissítést és törlést.
Bemutattuk a koncepciókat egy gyakorlati alkalmazás segítségével, és ezt a következő oktatóprogramokban folytatjuk, és további funkcionalitást adunk az alkalmazáshoz.