Database Plugin

Titan Mini Framework, veritabanı işlemleri için PHP'nin PDO kütüphanesinden türetilmiş TitanDB kütüphanesini kullanır.

Veritabanı Bağlantısı Kurma

Titan Mini Framework üzerinde veritabanı bağlantısı kurmak için /app/config dizininde bulunan db.php dosyasında bağlantı ile ilgili ayarlar yapılmalıdır.

return [
	'db_driver'		=> '', // Database driver
	'db_host'		=> '', // Database host (örnek: 'localhost')
	'db_user'		=> '', // Database kullanıcı adı
	'db_pass'		=> '', // Database şifresi
	'db_name'		=> '', // Database adı
	'db_charset'	=> 'utf8', // Database charset
	'db_collation'	=> 'utf8_general_ci', // Database collation
	'db_prefix'		=> '' // Database prefix
];

Tek Satir Veri Çekme

Veritabanındakı bir tablodan tek satır kayıt çekmek için;

// İstenilen kolonları seçmek için
// SELECT kolon1, kolon2, ... FROM tablo
$this->db->select('kolon1, kolon2, ...')
		 ->from('tablo')
		 ->get()
		 ->row();

// SELECT kolon1 as k1, kolon2 as k2, ... FROM tablo as t1
$this->db->select('kolon1 as k1, kolon2 as k2, ...')
		 ->from('tablo as t1')
		 ->get()
		 ->row();
   
// İlgili kayıttaki tüm kolonları seçmek için
$this->db->get('tablo')->row(); // SELECT * FROM tablo

Çoklu Veri Çekme

Veritabanindaki bir tablodan birden fazla sayida kayit çekmek için ;

// İstenilen kolonları seçmek için
// SELECT kolon1, kolon2, ... FROM tablo
$this->db->select('kolon1, kolon2, ...')
		 ->from('tablo')
		 ->get()
		 ->results();

// SELECT kolon1 as k1, kolon2 as k2, ... FROM tablo as t1
$this->db->select('kolon1 as k1, kolon2 as k2, ...')
		 ->from('tablo as t1')
		 ->get()
		 ->results();
   
// İlgili kayıttaki tüm kolonları seçmek için
$this->db->get('tablo')->results(); // SELECT * FROM tablo

JOIN Kullanımı

Birden fazla tablodan kayıt çekmek için join() methodu kullanılır. 3 Paremetre alır; birleştirilecek tablo ismi, birleştirme koşulu ve join tipi.

// LEFT JOIN kullanarak çoklu veri çekme örneği
// SELECT t1.kolon1, t1.kolon2, t2.kolon3, t2.kolon4 FROM tablo_1 as t1 LEFT JOIN tablo_2 as t2 ON t1.id=t2.id
$this->db->select('t1.kolon1, t1.kolon2, t2.kolon3, t2.kolon4')
         ->from('tablo_1 as t1')
         ->join('tablo_2 as t2', 't1.id=t2.id', 'left')
         ->get()
         ->results();

WHERE Kullanımı

Herhangi bir tablodan çekilen verilere koşul eklemek için where(), or_where methodları kullanılır. 3 Parametre alır; kolon adı, değer ve mantıksal operatör.

// SELECT kolon1, kolon2 FROM tablo WHERE id=5
$this->db->select('kolon1, kolon2')
         ->from('tablo')
         ->where('id', 5)
         ->get()
         ->row();

// SELECT kolon1, kolon2 FROM tablo WHERE id>5
$this->db->select('kolon1, kolon2')
         ->from('tablo')
         ->where('id', 5, '>')
         ->get()
         ->results();

// SELECT ad, soyad FROM tablo WHERE yas>20 AND il=34
$this->db->select('ad, soyad')
         ->from('tablo')
         ->where('yas', 20, '>')
         ->where('il', 34)
         ->get()
         ->results();

// SELECT ad, soyad FROM tablo WHERE yas>20 OR dogum_tarihi>1996
$this->db->select('ad, soyad')
         ->from('tablo')
         ->where('yas', 20, '>')
         ->or_where('dogum_tarihi', 1996, '>')
         ->get()
         ->results();

ORDER BY ve LIMIT Kullanımı

Herhangi bir tablodan çekilen kayıtları sıralamak için order_by() methodu kullanilir. Sıralama türüne göre asc ve desc parametrelerinden birini alır. Varsayılan değer asc dir.

Belirli sayıda kayıt sorgulamak için limit() methodu kullanılır. 2 Parametre alabilir. İlki çekilecek kayıt sayısını belirtir. İkinci parametre ise zorunlu değildir ve kaçıncı kayıttan itibaren başlanacağını belirtir. Varsayılan değeri 0'dır.

// SELECT ad, soyad FROM tablo ORDER BY yas ASC LIMIT 20
$this->db->select('ad, soyad')
         ->from('tablo')
         ->order_by('yas', 'asc')
         ->limit(20)   
         ->get()
         ->results();

GROUP BY Kullanımı

Herhangi bir tablodan çekilen kayıtları gruplamak için group_by() methodu kullanılır. Gruplama yapılacak kolon ismini parametre olarak alır.

// SELECT ad, soyad, kitap, COUNT(*) FROM tablo GROUP BY kitap
$this->db->select('ad, soyad, kitap, COUNT(*)')
         ->from('tablo')
         ->group_by('kitap')   
         ->get()
         ->results();

HAVING Kullanımı

GROUP BY ile gruplanan kayıtlar üzerinde koşul belirlemek için having() methodu kullanılır. Kullanımı where() methodu ile aynı şekildedir.

// SELECT ad, soyad, kitap, COUNT(*) GROUP BY kitap HAVING COUNT(*)>15
$this->db->select('ad, soyad, kitap, COUNT(*)')
         ->from('tablo')
         ->group_by('kitap')
         ->having('COUNT(*)', 15, '>')
         ->get()
         ->results();

LIKE ve NOT LIKE Kullanımı

LIKE ve NOT LIKE ile koşullu sorgulama yapmak için like(), or_like() ve not_like() methodları kullanılır.

// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%'
$this->db->select('ad, soyad')
         ->from('tablo')
         ->like('soyad', '%OĞLU')
         ->get()
         ->results();

// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%' OR ad LIKE 'MEHMET%'
$this->db->select('ad, soyad')
         ->from('tablo')
         ->like('ad', 'AHMET%')
         ->or_like('ad', 'MEHMET%')
         ->get()
         ->results();

// SELECT ad, soyad FROM tablo WHERE ad NOT LIKE 'AHMET%'
$this->db->select('ad, soyad')
         ->from('tablo')
         ->not_like('ad', 'AHMET%')
         ->get()
         ->results();

IN ve NOT IN Kullanımı

IN ve NOT IN ile koşullu sorgulama yapmak için in() ve not_in() methodları kullanılır.

// SELECT ad, soyad FROM tablo WHERE sehir IN(9, 35, 20, 48)
$this->db->select('ad, soyad')
         ->from('tablo')
         ->in('sehir', [9,35,20,48])
         ->get()
         ->results();

// SELECT ad, soyad FROM tablo WHERE sehir NOT IN(9, 35, 20, 48)
$this->db->select('ad, soyad')
         ->from('tablo')
         ->not_in('sehir', [9,35,20,48])
         ->get()
         ->results();

Veri Ekleme

Herhangi bir tabloya veri eklemek için insert() methodu kullanılır. 2 Parametre alır; kayıt eklenecek tablo adı ve eklenecek kayıtların bulunduğu dizi.

// INSERT INTO tablo SET ad='John', soyad='Doe', sehir=34
$veriler = [
    'ad'    => 'John',
    'soyad' => 'Doe',
    'sehir' => 34
];

$this->db->insert('tablo', $veriler);

Veri Güncelleme

Herhangi bir tablodaki bir ya da birden fazla kayıt üzerinde düzeltme yapmak için update() methodu kullanılır. 2 Parametre alır; düzeltme yapılacak tablo adı ve düzeltilecek alanlarla yeni değerlerinin bulunduğu dizi.

// UPDATE tablo SET ad='John', soyad='Doe', sehir=34 WHERE id=15
$veriler = [
    'ad'    => 'John',
    'soyad' => 'Doe',
    'sehir' => 34
];

$this->db->where('id', 15);
$this->db->update('tablo', $veriler);

Veri Silme

Herhangi bir tablodan bir ya da birden fazla kayıt silmek için delete() methodu kullanılır. Silme işleminin yapılacağı tablo adı parametre olarak verilir.

// DELETE FROM tablo WHERE id=15
$this->db->where('id', 15);
$this->db->delete('tablo');

Son Eklenen Kayıt ID

En son çalıştırılan insert sorgusu sonucunda eklenen kaydın id değerini öğrenmek için insert_id() methodu kullanılır.

$veriler = [
    'ad'    => 'John',
    'soyad' => 'Doe',
    'sehir' => 34
];

$this->db->insert('tablo', $veriler);
echo $this->db->insert_id();

Kayıt Sayısını Bulma

Bir sorgu sonucunda çekilen kayıt sayısını öğrenmek için num_rows() methodu kullanılır.

$this->db->select('*')
         ->from('tablo')
         ->where('yas', 20, '>')
         ->get()
         ->results();

echo $this->db->num_rows();

Son Çalıştırılan Sorguyu Bulma

En son çalıştırılan SQL sorgusunu öğrenmek için last_query() methodu kullanılır.

echo $this->db->last_query();

SQL Sorgusu Çalıştırma

SQL cümlesi yazarak sorgu çalıştırmak için query() methodu kullanılır.

// Tek satır veri çekmek için
$this->db->query("SELECT * FROM tablo WHERE id=5")->row();

// Çoklu veri çekmek için
$this->db->query("SELECT * FROM tablo")->results();

// Kayıt eklemek için
$this->db->query("INSERT INTO tablo SET kolon1='deger1', kolon2='deger2'");

// Kayıt güncellemek için
$this->db->query("UPDATE tablo SET kolon1='deger1', kolon2='deger2' WHERE id=5");

// Kayıt silmek için
$this->db->query("DELETE FROM tablo WHERE id=5");

// Stored Procedure çalıştırmak için
$this->db->query("CALL procedure_1()");

PDO Methodlarına Erişim

TitanDB'nin türetilmiş olduğu PDO nesnesine ait methodlara erişmek için pdo() methodu kullanılır.

$this->db->pdo->prepare("SELECT * FROM table WHERE column1 < ? AND column1 > ?");
$this->db->pdo->execute([250, 100]);
$results = $this->db->pdo->fetchAll();

Plugin ve Helper İçerisinden Erişim

Framework içerisindeki plugin ve helper dosyalarından database nesnesine erişmek için, yükleyici sınıfta bulunan database() methodu kullanılır.

  • Plugin içerisinden erişmek için;
class Ornek
{
	private $titan;
	private $db;
	
	function ornekFonksiyon()
	{
		$this->titan 	= Loader::getInstance();
		$this->db		= $this->titan->database();
	}
}
  • Helper içerisinden erişmek için;
function ornekFonksiyon()
{
	$titan 	= Loader::getInstance();
	$db		= $titan->database();
}