Database Kütüphanesi

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

  1. Veritabanı Ayarlarını Yapılandırma
  2. Tek Satır Veri Çekme » getRow()
  3. Çoklu Veri Çekme » getAll()
  4. WHERE Kullanımı » where()
  5. WHERE Gruplama » whereGroupStart(), whereGroupEnd()
  6. JOIN Kullanımı » leftJoin(), rightJoin(), innerJoin(), outerJoin()
  7. ORDER BY ve LIMIT Kullanımı » orderBy(), limit()
  8. GROUP BY Kullanımı » groupBy()
  9. HAVING Kullanımı » having(), orHaving()
  10. HAVING Gruplama » havingGroupStart(), havingGroupEnd()
  11. LIKE ve NOT LIKE Kullanımı » like(), orLike(), notLike(), orNotLike()
  12. IN ve NOT IN Kullanımı » in(), orIn(), notIn(), orNotIn()
  13. BETWEEN Kullanımı » between(), orBetween(), notBetween(), orNotBetween()
  14. INSERT Kullanımı » insert()
  15. UPDATE Kullanımı » update()
  16. DELETE Kullanımı » delete()
  17. Son Eklenen Kayıt ID » lastInsertId()
  18. Kayıt Sayısını Bulma » numRows()
  19. Son Çalıştırılan Sorguyu Bulma » lastQuery()
  20. SQL Sorgusu Çalıştırma » customQuery()

Tek Satır Veri Çekme

Veritabanındaki bir tablodan tek satır veri çekmek için getRow() methodu kullanılır. Parametre verilmediği takdirde veriyi object formatında döndürür. Array formatında almak için 'array' parametresi verilmelidir.

// Object döndürür
DB::table('tablo')->select('col_1, col_2')->getRow();

// Array döndürür
DB::table('tablo')->select('col_1, col_2')->getRow('array');

Çoklu Veri Çekme

Veritabanındaki bir tablodan birden fazla sayıda kayıt çekmek için getAll() methodu kullanılır. Parametre verilmediği takdirde veriyi object formatında döndürür. Array formatında almak için 'array' parametresi verilmelidir.

// Object döndürür
DB::table('tablo')->select('col_1, col_2')->getAll();

// İlgili kayıttaki tüm kolonları çeker
DB::table('tablo')->getAll();

// Array döndürür
DB::table('tablo')->select('col_1, col_2')->getAll('array');

WHERE Kullanımı

Bir tablodan bir ya da birden fazla koşula uygun veri ya da verileri çekmek için where(), orWhere() methodları kullanılır. Kolon adı, koşula bağlanan değer ve mantıksal operator bilgilerini parametre olarak alır.

Parametre Veri Tipi Açıklama
$column String Kolon adı
$operator String Mantıksal operatör ('=', '<', '>' , '<=', '>=')
$value String Kolon değeri
// SELECT col_1, col_2 FROM tablo WHERE id=5
DB::table('tablo')
		->select('ad, soyad')
		->where('id', '=', 5)
		->getRow();

// SELECT col_1, col_2 FROM tablo WHERE yas>20 AND il=34
DB::table('tablo')
		->select('ad, soyad')
		->where('yas', '>', 20)
		->where('il', '=', 34)
		->getAll();
						  
// SELECT ad, soyad FROM tablo WHERE yas>20 OR dogum_tarihi>1996
DB::table('tablo')
		->select('ad, soyad')
		->where('yas', '>', 20)
		->or_where('dogum_tarihi', '>', 1996)
		->getAll();

WHERE Gruplama

Birden fazla koşul kullanılması gereken sorgularda doğru sonuç alabilmek için koşulların gruplandırılması gerekir. Bunun için gruplandırmanın başladığı yerde whereGroupStart(), bittiği yerde de whereGroupEnd() methodları kullanılır.

Parametre olarak AND ve OR operatörlerini alabilir. Varsayılan durumda operatör AND olarak ayarlanmıştır. Oluşturulan gruptan önce başka bir koşul belirtilmiş ise, grup bu koşula parametrede belirtilen operatör ile bağlanır.

Gruptan önce herhangi bir koşul belirtilmemiş ise parametre vermeye gerek yoktur.

Parametre Veri Tipi Açıklama
$operator String Kendisinden önceki koşula bağlanma operatörü
// SELECT col_1, col_2 FROM tablo WHERE kosul>5 AND (kosul_2='deger_2' OR kosul_2='deger_3')
DB::table('tablo')
		->select('col_1, col_2')
		->where('kosul_1', '>', 5)
		->whereGroupStart()
		->where('kosul_2', '=', 'deger_2')
		->orWhere('kosul_2', '=', 'deger_3')
		->whereGroupEnd()
		->getAll();

// SELECT col_1, col_2 FROM tablo WHERE kosul>5 OR (kosul_2='deger_2' OR kosul_2='deger_3')
DB::table('tablo')
		->select('col_1, col_2')
		->where('kosul_1', '>', 5)
		->whereGroupStart('OR')
		->where('kosul_2', '=', 'deger_2')
		->orWhere('kosul_2', '=', 'deger_3')
		->whereGroupEnd()
		->getAll();

JOIN Kullanımı

Tablolar arasında birleştirme yapmak için leftJoin(), rightJoin(), innerJoin() ve outerJoin() methodları kullanılır. Birleştirilecek tablo adı ve birleştirme koşullarını parametre olarak alır.

Parametre Veri Tipi Açıklama
$table String Birleştirilecek tablo adı
$op String Birleştirme koşulu
# leftJoin()

Tabloları LEFT JOIN deyimi ile birleştirmek için kullanılır.

// SELECT t1.username, t2.comment FROM users as t1 LEFT JOIN comments as t2 ON t1.user_id=t2.user_id
DB::table('users as t1')
		->leftJoin('comments as t2', 't1.user_id=t2.user_id')
		->select('t1.username, t2.comment')
		->getAll();
# rightJoin()

Tabloları RIGHT JOIN deyimi ile birleştirmek için kullanılır.

// SELECT t1.username, t2.comment FROM users as t1 RIGHT JOIN comments as t2 ON t1.user_id=t2.user_id
DB::table('users as t1')
		->rightJoin('comments as t2', 't1.user_id=t2.user_id')
		->select('t1.username, t2.comment')
		->getAll();
# innerJoin()

Tabloları INNER JOIN deyimi ile birleştirmek için kullanılır.

// SELECT t1.username, t2.comment FROM users as t1 INNER JOIN comments as t2 ON t1.user_id=t2.user_id
DB::table('users as t1')
		->innerJoin('comments as t2', 't1.user_id=t2.user_id')
		->select('t1.username, t2.comment')
		->getAll();
# outerJoin()

Tabloları FULL OUTER JOIN deyimi ile birleştirmek için kullanılır.

// SELECT t1.username, t2.comment FROM users as t1 FULL OUTER JOIN comments as t2 ON t1.user_id=t2.user_id
DB::table('users as t1')
		->outerJoin('comments as t2', 't1.user_id=t2.user_id')
		->select('t1.username, t2.comment')
		->getAll();

ORDER BY ve LIMIT Kullanımı

Kayıtların belirli bir kolona göre sıralanmış şekilde çekilmesini sağlayan ORDER BY deyimi ve çekilecek kayıt sayısını belirten LIMIT deyiminin karşığı olarak kullanılırlar.

# orderBy()
Parametre Veri Tipi Açıklama
$column String Sıralama yapılacak kolon ismi
$direction String Sıralama yönü (Varsayılan: ASC)
// SELECT * FROM tablo ORDER BY id ASC
DB::table('tablo')->orderBy('id')->getAll();

// SELECT * FROM tablo ORDER BY id DESC
DB::table('tablo')->orderBy('id', 'desc')->getAll();
# limit()
Parametre Veri Tipi Açıklama
$limit Integer Çekilecek kayıt sayısı
$start Integer Başlangıç kaydı (Varsayılan: 0)
// SELECT * FROM tablo ORDER BY id DESC LIMIT 100
DB::table('tablo')->orderBy('id', 'desc')->limit(100)->getAll();

// SELECT * FROM tablo ORDER BY id ASC LIMIT 100, 50
DB::table('tablo')->order_by('id')->limit(100, 50)->getAll();

GROUP BY Kullanımı

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

Parametre Veri Tipi Açıklama
$column String Gruplama yapılacak kolon ismi
// SELECT kitap, COUNT(*) FROM tablo GROUP BY kitap
DB::table('tablo')->select('kitap, COUNT(*)')->groupBy('kitap')->getAll();

HAVING Kullanımı

GROUP BY ile gruplanan kayıtlar üzerinde koşul belirlemek için having() ve orHaving() methodları kullanılır. Parametreler where() ve orWhere() methodları ile aynıdır.

Parametre Veri Tipi Açıklama
$column String Kolon adı
$operator String Mantıksal operatör ('=', '<', '>' , '<=', '>=')
$value String Kolon değeri
// SELECT kitap, COUNT(*) GROUP BY kitap HAVING COUNT(*)>15
DB::table('tablo')
		->select('kitap, COUNT(*)')
		->groupBy('kitap')
		->having('COUNT(*)', '>', 15)
		->getAll();

// SELECT kitap, COUNT(*) GROUP BY kitap HAVING COUNT(*)>15 AND COUNT(*)<50
DB::table('tablo')
		->select('kitap, COUNT(*)')
		->groupBy('kitap')
		->having('COUNT(*)', '>', 15)
		->having('COUNT(*)', '<', 50)
		->getAll();
		
// SELECT kitap, COUNT(*) GROUP BY kitap HAVING COUNT(*)>15 OR MAX(price)<50
DB::table('tablo')
		->select('kitap, COUNT(*)')
		->groupBy('kitap')
		->having('COUNT(*)', '>', 15)
		->orHaving('MAX(price)', '<', 50)
		->getAll();

HAVING Gruplama

GROUP BY ile gruplanan kayıtlar üzerinde birden fazla koşul kullanılması gereken durumlarda, doğru sonuç alabilmek için koşulların gruplandırılması gerekir. Bunun için gruplandırmanın başladığı yerde havingGroupStart(), bittiği yerde de havingGroupEnd() methodları kullanılır.

Parametre olarak AND ve OR operatörlerini alabilir. Varsayılan durumda operatör AND olarak ayarlanmıştır. Oluşturulan gruptan önce başka bir koşul belirtilmiş ise, grup bu koşula parametrede belirtilen operatör ile bağlanır.

Gruptan önce herhangi bir koşul belirtilmemiş ise parametre vermeye gerek yoktur.

Parametre Veri Tipi Açıklama
$operator String Kendisinden önceki koşula bağlanma operatörü

Kullanımı WHERE Gruplama ile aynı şekildedir.

LIKE ve NOT LIKE Kullanımı

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

Parametre Veri Tipi Açıklama
$column String Kolon adı
$value String Değer
// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%'
DB::table('tablo')->select('ad, soyad')->like('ad', 'AHMET%')->getAll();

// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%' AND soyad LIKE '%OĞLU'
DB::table('tablo')->select('ad, soyad')->like('ad', 'AHMET%')->like('soyad', '%OĞLU')->getAll();

// SELECT ad, soyad FROM tablo WHERE ad LIKE 'AHMET%' OR ad LIKE 'MEHMET%'
DB::table('tablo')->select('ad, soyad')->like('ad', 'AHMET%')->orLike('ad', 'MEHMET%')->getAll();

// SELECT ad, soyad FROM tablo WHERE ad NOT LIKE 'AHMET%'
DB::table('tablo')->select('ad, soyad')->notLike('ad', 'AHMET%')->getAll();

// SELECT ad, soyad FROM tablo WHERE ad NOT LIKE 'AHMET%' OR ad NOT LIKE 'MEHMET%'
DB::table('tablo')->select('ad, soyad')->notLike('ad', 'AHMET%')->orNotLike('ad', 'MEHMET%')->getAll();

IN ve NOT IN Kullanımı

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

Parametre Veri Tipi Açıklama
$column String Kolon adı
$value Array Değerler dizisi
// SELECT ad, soyad FROM tablo WHERE sehir IN(9, 35, 20, 48)
DB::table('tablo')->select('ad, soyad')->in('sehir', [9,35,20,48])->getAll();

// SELECT ad, soyad FROM tablo WHERE sehir NOT IN(9, 35, 20, 48)
DB::table('tablo')->select('ad, soyad')->notIn('sehir', [9,35,20,48])->getAll();

BETWEEN Kullanımı

BETWEEN ile koşullu sorgulama yapmak için between(), orBetween(), notBetween() ve orNotBetween() methodları kullanılır.

Parametre Veri Tipi Açıklama
$column String Kolon adı
$firstValue Integer İlk değer
$secondValue Integer Son değer
// SELECT ad, soyad FROM tablo WHERE yas BETWEEN 20 AND 30
DB::table('tablo')->select('ad, soyad')->between('yas', 20, 30)->getAll();

// SELECT ad, soyad FROM tablo WHERE yas NOT BETWEEN 20 AND 30
DB::table('tablo')->select('ad, soyad')->notBetween('yas', 20, 30)->getAll();

INSERT Kullanımı

Bir tabloya kayıt eklemek için insert() methodu kullanılır. Tabloya eklenecek verileri içeren bir dizi değişkeni parametre olarak alır. Kayıt işlemi başarılı ise true, değilse false döndürür.

insert() methodundan önce, kayıt yapılacak tabloyu belirlemek için table() methodu kullanılmalıdır.

Parametre Veri Tipi Açıklama
$table String Kayıt yapılacak tablo adı
$data Array Tabloya eklenecek veriler
/// INSERT INTO tablo SET ad='John', soyad='Doe', sehir=34
$veriler = [
    'ad'    => 'John',
    'soyad' => 'Doe',
    'sehir' => 34
];

DB::table('tablo')->insert($veriler);

UPDATE Kullanımı

Herhangi bir tablodaki bir ya da birden fazla kayıt üzerinde düzeltme yapmak için update() methodu kullanılır. Düzeltilecek verileri içeren bir dizi değişkeni parametre olarak alır. Düzeltme işleminden etkilenen kayıt sayısını döndürür.

update() methodundan önce, düzeltme yapılacak tabloyu belirlemek için table() methodu kullanılmalıdır.

Parametre Veri Tipi Açıklama
$table String Düzeltme yapılacak tablo adı
$data Array Düzeltilecek veriler
/// UPDATE tablo SET ad='John', soyad='Doe', sehir=34 WHERE id=5
$veriler = [
    'ad'    => 'John',
    'soyad' => 'Doe',
    'sehir' => 34
];

DB::table('tablo')->where('id', '=', 5)->update($veriler);

DELETE Kullanımı

Herhangi bir tablodan bir ya da birden fazla kayıt silmek için delete() methodu kullanılır. Silme işleminden etkilenen kayıt sayısını döndürür.

delete() methodundan önce, kayıt silinecek tabloyu belirlemek için table() methodu kullanılmalıdır.

/// DELETE FROM tablo WHERE id=5
DB::table('tablo')->where('id', '=', 5)->delete();

Son Eklenen Kayıt ID

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

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

DB::table('tablo')->insert($veriler);
echo DB::lastInsertId();

Kayıt Sayısını Bulma

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

DB::table('tablo')->where('yas', '>', 20)->getAll();
echo DB::numRows();

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

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

echo DB::lastQuery();

SQL Sorgusu Çalıştırma

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

// Tek satır veri çekmek için
DB::customQuery("SELECT * FROM tablo WHERE id=5")->getRow();

// Çoklu veri çekmek için
DB::customQuery("SELECT * FROM tablo")->getAll();

// Kayıt eklemek için
DB::customQuery("INSERT INTO tablo SET kolon1='deger1', kolon2='deger2'");

// Kayıt güncellemek için
DB::customQuery("UPDATE tablo SET kolon1='deger1', kolon2='deger2' WHERE id=5");

// Kayıt silmek için
DB::customQuery("DELETE FROM tablo WHERE id=5");

// Stored Procedure çalıştırmak için
DB::customQuery("CALL procedure_1()");