CodeIgniter adatbázis oktatóanyag: Létrehozás, frissítés, törlés

Tartalomjegyzék:

Anonim

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.