Veritabanı Kütüphanesi (Bölüm 2)


    × Bunları biliyor muydunuz?
"Libraries/ dizini içine taşınan veya bu dizinde oluşturulan kütüphaneler hiç bir tanımlama gerektirmeden kullanılabilir. "


(ZN >= 1.0.0)

Database kütüphanesi 2. bölüm.

 

 

# Yöntemler


This innerJoin(String $table, String $otherColumn, String $operator = '=')
This outerJoin(String $table, String $otherColumn, String $operator = '=')
This leftJoin(String $table, String $otherColumn, String $operator = '=')
This rightJoin(String $table, String $otherColumn, String $operator = '=')
This union(String $table)
This unionAll(String $table)
This transStart(Void)
This transQuery(Void)
Bool transEnd(Void)
This caching(String $time, String $driver = 'file')
This cleanCaching(Void)
This distinct(Void)
This distinctRow(Void)
String cset(String $set)
String collate(String $set)
String encoding(String $charset = 'utf8', String $collate = 'utf8_general_ci')
String escapeString(String $data)
String realEscapeString(String $data)
Mixed characterSet(String $set, Bool $return = false)
String alias(String $string, String $alias, Bool $brackets = false)
String brackets(String $string)
This all(Void)
This maxStatementTime(String $time)
This straightJoin(Void)
This highPriority(Void)
This lowPriority(Void)
This quick(Void)
This delayed(Void)
This ignore(Void)
This partition(String ...$args)
This procedure(String ...$args)
This outFile(String $file)
This dumpFile(String $file)
This into(String $varname1, String $varname2)
This forUpdate(Void)
This lockInShareMode(Void)
This smallResult(Void)
This bigResult(Void)
This bufferResult(Void)
This cache(Void)
This noCache(Void)
This calcFoundRows(Void)

 

 

# InnerJoin (ZN >= 3.0.0)


Tablolar arasında SQL INNER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar

Birleştirme işlemine konu olmuş tablolar ile hangi işlemlerin yapıldığı aşağıda örneklendirilmiştir.

Select
DB::innerJoin('comments.user_id', 'profiles.user_id')
  ->innerJoin('profiles.user_id', 'users.id')
  ->users();
SELECT *
FROM users
INNER JOIN comments ON comments.user_id = profiles.user_id
INNER JOIN profiles ON profiles.user_id = users.id
Update

Inner Join ile update işlemi

DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->update('table1',
[
    'table1.name'  => 'Example Name',
    'table2.phone' => '0000000000'
]);
UPDATE table1
INNER JOIN table2 ON table2.user_id = table1.id
SET table1.name='Example Name',table2.phone='0000000000'
WHERE table1.id = 20
Delete

Inner Join ile delete işlemi

DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->delete('table1');
DELETE table1, table2 FROM table1
INNER JOIN table2 ON table2.user_id = table1.id
WHERE table1.id = 20 

 

 

# OuterJoin (ZN >= 3.0.0)


Tablolar arasında SQL FULL OUTER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::outerJoin('comments.user_id', 'profiles.user_id')
  ->outerJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
FULL OUTER JOIN comments ON comments.user_id = profiles.user_id
FULL OUTER JOIN profiles ON profiles.user_id = users.id

 

 

# LeftJoin (ZN >= 3.0.0)


Tablolar arasında SQL LEFT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::leftJoin('comments.user_id', 'profiles.user_id')
  ->leftJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
LEFT JOIN comments ON comments.user_id = profiles.user_id
LEFT JOIN profiles ON profiles.user_id = users.id

 

 

# RightJoin (ZN >= 3.0.0)


Tablolar arasında SQL RIGHT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
String $tableColumn Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir.
Return This
Kullanımlar
DB::rightJoin('comments.user_id', 'profiles.user_id')
  ->rightJoin('profiles.user_id', 'users.id')
  ->users();
SQL Code:
SELECT *
FROM users
RIGHT JOIN comments ON comments.user_id = profiles.user_id
RIGHT JOIN profiles ON profiles.user_id = users.id

 

 

# Union (ZN >= 4.3.3)


Tablolar arasında SQL UNION deyimi ile birleştirme yapmak için kullanılır.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
Return This
Kullanımlar
$users = DB::select('id', 'name')->union('example')->select('id', 'phone')->users();

output($users->stringQuery());
output($users->result());
SELECT id,name FROM example UNION SELECT id,phone FROM users
0 => object
(
        id => string '2' ( length = 3 )
        name => string 'Example' ( length = 9 )
)
1 => object
(
        id => string '3' ( length = 3 )
        name => string 'Test' ( length = 5 )
)
2 => object
(
        id => string '1' ( length = 3 )
        name => string '55332587488' ( length = 7 )
)
3 => object
(
        id => string '2' ( length = 3 )
        name => string '88996544878' ( length = 4 )

 

 

# UnionAll (ZN >= 4.3.3)


Tablolar arasında SQL UNION ALL deyimi ile birleştirme yapmak için kullanılır.

Parametreler
String $joinTableColumn Birleştirilecek tablo ve kolon bilgisi.
Return This
Kullanımlar
$users = DB::select('id', 'name')->unionAll('example')->select('id', 'phone')->users();

output($users->stringQuery());
output($users->result());
SELECT id,name FROM example UNION ALL SELECT id,phone FROM users
0 => object
(
        id => string '2' ( length = 3 )
        name => string 'Example' ( length = 9 )
)
1 => object
(
        id => string '3' ( length = 3 )
        name => string 'Test' ( length = 5 )
)
2 => object
(
        id => string '1' ( length = 3 )
        name => string '55332587488' ( length = 7 )
)
3 => object
(
        id => string '2' ( length = 3 )
        name => string '88996544878' ( length = 4 )

 

 

# TransStart (ZN >= 2.0.0)


Transaction sorgular birden fazla sorguyu sırayla çalıştırıp sorgulardan birinde sorun olması durumunda çalışan önceki sorguları iptal eden yapılardır. Yani bu tür sorguya konu olan tüm sorguların başarılı bir şekilde çalışması gerekir. Bu durum tüm sorguların düzgün çalışıp çalışmadığı ile ilgili sorunları ortadan kaldırır. Sorguya başlarken transStart() yöntemi kullanılır. Transaction sorgular MYSQL yerine daha çok MYISAM, InnoDB veya BDB tablo türlerinde çalışır. Çoğu veritabanı platformları transaction sorgu işlemlerini destekler.

Parametreler
Void
Return This
Kullanımlar
DB::transStart()
  ->transQuery('...queries...')
  ->transQuery('...queries...')
  ->transEnd();

Şeklinde kullanabilirsiniz.

 

 

# TransQuery (ZN >= 4.3.3)


Transaction sorguların çalıştırılacağı yöntemdir.

Parametreler
String $query Çalıştırılacak SQL sorgusu.
Return This
Kullanımlar
DB::transStart()
  ->transQuery('...queries...')
  ->transQuery('...queries...')
  ->transEnd();

Şeklinde kullanabilirsiniz.

 

 

# TransEnd (ZN >= 2.0.0)


Başlatılan transaction sorguyu bitirir.

Void
Return Bool
DB::transStart()
  ->transQuery('...queries...')
  ->transQuery('...queries...')
  ->transEnd();

 

 

# Caching (ZN >= 4.3.6)


SELECT sorgusunu ön belleklemek için kullanılır. Bu işlem ZN Framework'ün Cache:: kütüphanesi ile yapıldığından bu kütüphanenin sürücüleri kullanılabilir. cache:file sürücüsü çok verimli olmadığı için bu sürücü ile kullanımı tavsiye edilmemektedir. Çok sayıda sorgular için denenebilir.

Parametreler
Scalar $time Ön belleklenen sorgunun ne kadar süre ile saklanacağı.
String $cacheDriver = 'file' Ön bellekleme sürücülerinden biri.
Return This
Kullanımlar
$photos = DB::caching('1 day')->photos();

output($photos->row());
$photos = DB::caching('10 second', 'redis')->photos();

output($photos->result());

 

 

# CleanCaching (ZN >= 4.3.6)


Ön belleklenen sorguyu silmek için kullanılır. Hangi sorgunun ön belleği silinecekse o sorgu ile kullanılır.

Parametreler
Void
Return This
Kullanımlar
$photos = DB::photos();

$photos->cleanCaching();

output($photos->row());

 

 

# Distinct / DistinctRow (ZN >= 1.0.4)


SQL DISTINCT deyiminin karşılığıdır. Tekrar eden verileri izole etmek için kullanılır.

Parametreler
Void
Return This
Kullanımlar
DB::distinct()->select('id', 'name', 'phone')->users();
SQL Code: SELECT DISTINCT id,name,phone FROM users

 

 

# Cset (ZN >= 3.0.0)


SQL CHARACTER SET deyiminin karşılığıdır. Bu deyim sorgu aralarında kullanılır. Özellikle CREATE komutları ile birlikte kullanılır.

Parametreler
String $set Karakter seti.
Return String
Kullanımlar
echo DB::cset('utf8');
CHARACTER SET utf8

 

 

# Collate (ZN >= 3.0.0)


SQL COLLATE deyiminin karşılığıdır. Bu deyim sorgu aralarında kullanılır. Özellikle CREATE komutları ile birlikte kullanılır.

Parametreler
String $set Karakter kümesi.
Return String
Kullanımlar
echo DB::collate('utf8_general_ci');
COLLATE utf8_general_ci

 

 

# Encoding (ZN >= 3.0.0)


Yukarıda yer alan cset() ve collate() yöntemlerinin birleştirilerek kullanımı sağlar. Parametreler ön tanımlı olarak sırası ile utf8, utf8_general_ci tanımlıdır. Bu yöntem özellike CREATE DATABASE ve CREATE TABLE deyimleri ile birlikte kullanılır.

Parametreler
String $charset = 'utf8' Karakter seti.
String $collate = 'utf8_general_ci' Karakter kümesi.
Return String
Kullanımlar
echo DB::encoding(); 
CHARACTER SET utf8 COLLATE utf8_general_ci
echo DB::encoding('latin5', 'latin5_turkish_ci'); 
CHARACTER SET latin5 COLLATE latin5_turkish_ci

Bu tip esnek kullanımların amacı farklı veritabanı platformlarından kaynaklanan uyumsuzluktur.

 

 

# EscapeString / RealEscapeString (ZN >= 3.0.0)


Bu iki yöntemde aynı işlevi üstlenir. Dizge içerisinde tırnakların başına terst bölü sembolü ekler.

Parametreler
String $data Öncelenecek dizge.
Return String
Kullanımlar
DB::escapeString("Example'Data");     
DB::realEscapeString("Example'Data"); 

 

 

# CharacterSet (ZN >= 3.0.0)


Sadece SELECT sorguları yani get() yöntemi ile birlikte kullanılabilir.

Parametreler
String $set Karakter seti.
Bool $return = false Bu değer true olarak ayarlanırsa yöntem string çıktı üretir.
Return Mixed
Kullanımlar
echo DB::characterSet('utf8')->string()->users();
SELECT * FROM users CHARACTER SET utf8

Sadece fonksiyonu kullanmanız yeterli o, SELECT söz diziminde olması gereken yere yerleşir.