Codeigniter Serisi 9 – Veritabanı yapılandırma

PHP Programlama  Haziran 1, 2015

Artık veritabanı entegrasyonu yapmanın zamanı geldiğini düşünmekteyim. Malumunuz genel hatları, tasarım etkileşimini ve veri giriş çıkış yapısını görmüş olduk. Controller-View-Model yapısının üçüncü ayağı olan Model kısmına başlayacağız.

Bu yazımdan önce lütfen MySQL emplooyes örnek veritabanı ile ilgili makalemi (Sql Server altında) okumanızı şart koşuyorum. Orada ki işlemleri yaptıktan sonra çalışmamıza o veritabanı üzerinden devam edeceğiz.

Şimdi application/config/database.php dosyasını açıyoruz. Burada ki parametreleri şöyle bir sıralayarak anlayalım.

hostname: Database sunucusunun bulunduğu server. Genellikle uygulamanızla aynı sunucuda mysql server olduğu için localhost olarak belirlenir.

username: Database için kullanıcı adı. Eğer hosting hesabınız var ise veritabanı oluşturduğunuzda sizden istenilen kullanıcı adıdır. Lokal proje olduğu için root belirliyoruz.

password: Database için parola. Yine hosting hesabınızla oluşturduğunuz veritabanı için parolanız. Lokalde boş bırakıyoruz nede olmasa root hesbı bizde.

database: Kullanacağınız veritabanının adı. Biz örnek veritabanı projesi olan employees kullanacağız.

dbdriver: Standartta mysql sürücüsü kullanacağız, ancak mysql_li ve pdo gibi sürücüler de kullanmanız mümkün.

dbprefix: Database için eğer prefix yapsı kullanıyorsanız (ön ek) bunu belirtebilirsiniz. Bizim projemizde yok.

pconnect: Bağlantının etkin olması için kullanılan bir yöntemdir.

db_debug: Veritabanı hatalarını ve sonuçlarını detaylıca alabilmek için ayar.

cache_on: Ön bellekleme işlemini aktif kılmak içindir.

cachedir: Ön bellekleme dosya sistemi üzerinden çalışacağı için bellek klasörünün adresini tanımlar

char_set: Veritabanı için kullanacağınız karakter seti.

dbcollat: Karakter detayı için collation bilgisidir.

autoinit: Bağlantının otomatik olarak sisteme eklenmesini sağlar.

Parametreleri değiştirmeye pek gerek yok sadece hostname: localhost, username: root, database: employees olarak ayarlayıp kaydediyoruz.

Şimdi projemiz sürekli aktif olarak veritabanı kullanacağını farz ederek database kütüphanesini proje çalıştığında otomatik yüklemesini sağlayacağız. Bunun için application/config/autoload.php dosyasını açıyoruz. libraries parametresini aşağıda ki gibi değiştirmemiz gerekiyor.

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

Artık sistem çalıştığında sürekli database kütüphanesini tekrar tekrar load etmemize gerek yok. Şimdi bir model oluşturma zamanı. Ancak model ne demek onu bir defa anlayalım.

Model bir veritabanı tablosundan tutun bir view hatta bir stored procedure gibi veritabanı nesnelerinin bizde ki karşılığıdır. Tabi sadece veritabanında ki bir yapı da olmayabilir, bir sql kodu sonucu alacağınız karma verilerde bu kapsama girer. Bazı durumlarda session da saklayacağımız bilgileri de veritabanı olmadan bir modelle yönettiğimiz olur. Ancak şimdilik veritabanı sorgularının sonuçlarını (daha doğrusu bir tabloyu) model olarak kabul edelim.

Bir model oluşturmak için application/models klasörüne tüm harfleri küçük olan bir php dosyası oluşturuyoruz. Tabi şimdilik gelişi güzel oluşturmayalım. Projemizi emplooyes veritabanı üzerine kurmuştuk. Şimdi bir tablo belirleyip onun üzerinden gidelim. İlk olarak departments tablosunu ele alalım. Bu bağlamda models klasörüne departments.php adında bir dosya açıyoruz. Hemen php taglarını açıp şu kodu içine ekleyelim.

class Departments extends CI_Model{
 
}

class adının ilk harfinin büyük olması gerektiğini unutmuyoruz. Controller de olduğu gibi CI_Model sınıfını extend etmemiz de şart. Şimdi veritabanından bir veri çekip görelim. Bu aşamada bir metod oluşturuyoruz.

function get_departments_tests() {
 $query = $this->db->get('departments', 10);
 return $query->result();
 }

metodumuz departman tablosundan 10 kayıt okuyacaktır. Evet artık gelen veriyi ekrana dökmenin zamanı geldi. Şimdi bizimki controllerine bir fonksiyon ekleyelim. Bu controlleri önceki derslerimizde oluşturmuştuk.

function department_test() {
 $this->load->model('departments');
 var_dump($this->departments->get_departments_tests());
 }

Bu fonksiyonda gördüğünüz gibi önce oluşturduğumuz modeli yüklüyoruz. Sonra var_dump ile ekrana bastıracağız bunun için yüklediğimiz modeli referans edip oluşturduğumuz fonksiyonu çağırıyoruz. Modelimizde ki fonksiyon bize sonucu döndürdüğünü unutmayalım.

2015-06-01 03_47_35-Mozilla Firefox

Evet artık sonuç ortada. Projenin detayı için https://github.com/halityurttas/codeigniter4sample adresinden clone veya indirerek inceleyebilirsiniz. Bir sonraki yazımda size veri okuma, listeleme, kayıt ekleme ve düzenleme gibi hususlardan bahsedeceğim.

Tekrar görüşünceye dek esenlikle…

Bu yazı 1975 defa görüntülendi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yazar Hakkında

15 yıllık çalışma hayatında birçok proje geliştirmiş binlerce projeyi inceleme fırsatı bulmuş yazılım aşığıdır. İşini hobi olarak gören yazarımız iş hayatını profesyonelce zevkle sürdürmektedir.

Son Eklenenler