CodeIgniter Veritabanı Eğitimi: Oluşturma, Güncelleme, Silme

İçindekiler:

Anonim

CodeIgniter Veritabanı ile Çalışma

Önceki eğitimde, CodeIgniter aktif kaydının temellerini ve veritabanından kayıtların nasıl ekleneceğini, güncelleneceğini, silineceğini ve okunacağını ele aldık. Bu eğiticide, veritabanı modelleri oluşturacağız ve veritabanı kayıtlarını oluşturmak ve güncellemek için formları kullanacağız. CodeIgniter'da veritabanları ile çalışmaya tamamen yeniyseniz, önceki öğreticiyi okumanızı tavsiye ettiniz

Veritabanı Yapılandırması

Öğretici proje veritabanını oluşturarak başlayacağız. İletişim bilgilerini yönetmek için basit bir veritabanı oluşturacağız. İki (2) tablodan oluşan basit bir veritabanı oluşturacağız. Arkadaş ve şehirler arasındaki ilişki, şehirlerde birincil anahtar olarak id ve pals tablolarında yabancı anahtar olarak city_id ile bire bir. .

Veritabanını oluşturmak için aşağıdaki komut dosyalarını çalıştırın:

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

Şimdi şehirler tablosunu oluşturalım

CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;

CodeIgniter Veritabanı Modelleri

Şimdi veritabanımız için modeller oluşturacağız. Model, MVC'nin M kısmıdır. Model, veri erişimi, veri işleme ve iş mantığı ile ilgilenir.

CodeIgniter'da her modelin destekleyeceği yöntemleri tanımlaması gerekir. Her modelde aynı kodu tekrarlamak yerine, nesne yönelimli programlamada kalıtımdan yararlanacağız ve modellerimizin desteklemesini istediğimiz temel yöntemleri tanımlayacak bir üst model sınıfı oluşturacağız.

Aşağıdaki tablo, tanımlayacağımız yöntemleri ve verilere nasıl erişileceğini göstermektedir.

S / N Yöntem Açıklama
1 __construct Üst yapıcı yöntemini çağıran yapıcı yöntemini tanımlar
2 get_all Veritabanındaki tüm alanları ve kayıtları koşulsuz olarak geri alır.
3 get_by_id İd adlı INT türünün birincil anahtarını kullanarak veritabanından tek bir satır alır
4 get_where Kriterlere göre tüm alanları veritabanından alır
5 eklemek Veritabanına yeni bir kayıt ekler
6 Güncelleme İd adlı INT türünün birincil anahtarına dayalı olarak mevcut bir veritabanı kaydını günceller
7 sil İd adlı INT türünün birincil anahtarına dayalı olarak veritabanından var olan bir kaydı siler

Aşağıdaki görüntü, sınıf diyagramını ve Pals and Cities alt modellerinin BaseModel üst modeliyle nasıl ilişkili olduğunu gösterir.

Yukarıdaki görselde anlatıldığı gibi iki model oluşturacağız

Application / models / BaseModel.php'de yeni bir BaseModel sınıfı oluşturun

Aşağıdaki kodu ekleyin

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

İŞTE,

  • korumalı $ tablo = ''; tablo adlı korumalı bir değişkeni tanımlar. Bu, temel model sınıf yöntemlerimizin hangi tabloyla etkileşime girmesi gerektiğini belirtmek için ilgili alt sınıf tarafından doldurulacaktır.
  • public function __construct () {…} yapıcı yöntemini tanımlar ve CI_Model üst sınıfının yapıcı yöntemini yürütür.
  • get_all () {…}, SELECT sorgusunu veritabanımızda çalıştırmak için veritabanı kitaplığını ve $ table değişkeninin değerini kullanır.
  • get_by_id ($ id) {…}, veritabanından tek bir satırı alma yöntemini tanımlar ve INT veri türünde olması gereken bir $ id parametresini kabul eder.
  • get_where ($ where) {…}, bir where cümlesi ayarlamanıza izin veren get yöntemini tanımlar.
  • insert ($ data) {…}, ekleme yöntemini tanımlar ve veritabanına yazılacak değerleri içeren $ data dizi parametresini kabul eder.
  • update ($ id, $ data) {…} güncelleme yöntemini tanımlar ve veritabanında güncellenecek değerleri içeren $ data dizi parametresini kabul eder.
  • delete ($ id) {…}, INT veri türünde olması gereken $ id parametresini kabul eden silme yöntemini tanımlar.

Artık ebeveyn model sınıfıyla işimiz bittiğine göre, Pals modellerimizi oluşturalım.

Application / models / Pals.php'de yeni bir dosya oluşturun

Aşağıdaki kodu ekleyin

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

İŞTE,

  • Pals sınıfı, BaseModel'i genişletir {…}, BaseModel üst modelini genişletir ve BaseModel'de tanımlanan tüm yöntemleri otomatik olarak alt sınıfa erişir.
  • korumalı $ tablo = 'pals'; ebeveyn modelimizle ilişkili tablo adını tanımlar
  • __construct () {…} ana kurucuyu başlatır
  • public işlevi get_by_id ($ id) {…}, Pals modeline özgü özel uygulama sağlamak için get_by_id değerini geçersiz kılar. Get_by_id sorgusu, şehir adını şehirler tablosundan almak için bir birleştirme kullanır
  • public işlevi get_all () {…}, pals ve şehirler tablosu arasında bir birleştirme sorgusu uygulamak için get_all yöntemini geçersiz kılar

Application / models / Cities.php'de yeni bir dosya oluşturun


İŞTE,

  • korumalı $ tablo = 'şehirler'; model veritabanı tablosunu tanımlar.

Yukarıda verilen koddan da görebileceğiniz gibi, Miras, CodeIgniter'da modellerle çalışırken bize çok zaman kazandırıyor. Bir sonraki bölümde öğreneceğiz

Kişi Yöneticisi Denetleyicileri

Artık modelleri oluşturduğumuza göre, uygulamamız için denetleyicileri oluşturalım. Kişiler ve Şehirler olmak üzere iki denetleyicimiz olacak

Şehirlerle başlayalım

Application / controllers dizininde yeni bir Cities.php dosyası oluşturun

Aşağıdaki kodu ekleyin

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

İŞTE,

  • Yukarıdaki kod, veritabanından satırlar oluşturmak, güncellemek, silmek ve okumak için ihtiyaç duyulan tüm yöntemleri uygular.

Uygulama / denetleyicilerde başka bir dosya Contacts.php oluşturun

Aşağıdaki kodu ekleyin

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

Kişi Yöneticisi Görünümleri

Önceki eğitimlerde CodeIgniter'daki formlara ve doğrulamaya zaten baktık. Önceki eğitimlerde geliştirdiğimiz kodu kullanacağız. Bütünlük adına, önceki eğitimlerde oluşturduğumuz kodu yeniden üreteceğiz.

Uygulamamızın görüşleri aşağıdaki gibi olacaktır

Aşağıdaki bağlantıya tıklayarak yukarıdaki görünümler için kodu indirebilirsiniz.

CodeIgniter Contacts Manager Görünümleri İndir

Özet

Bu eğiticide, CodeIgniter'da nasıl model oluşturulacağını öğreneceksiniz. Ekleme, okuma, güncelleme ve silme gibi dört ana veritabanı işlemini uygulayan bir temel model oluşturarak kodun yeniden kullanılabilirliğini artırmak için nesne yönelimli programlamada kalıtımdan yararlandık.

Kavramları pratik bir uygulama kullanarak gösterdik ve sonraki eğitimlerde uygulamaya daha fazla işlevsellik ekleyerek bunu yapmaya devam edeceğiz.