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


    × Bunları biliyor muydunuz?
"Konsol ile ZN Framework içerisinde bulunan kütüphane, kontrolcü, model, komut ve fonksiyon çalıştırılabilir."


(ZN >= 1.0.0)

ZN Framework farklı veritabanı platformlarını desteleyecek şekilde oluşturulmuş veritabanı kütüphanesine sahiptir. Hangi platformların desteklendiği bir önceki konuda açıklanmıştır. Özellikle MySQL platformu merkeze alınarak bu kütüphane geliştirilmiştir. MySQL ile tam uyumlu olan Database sınıfları diğer veritabanı platformlarına da neredeyse tam uyumluluk sağlayacak şekilde genişletilmiştir.

Database kütüphanesi sayesinde neredeyse hiç bir SQL kodu yazmadan sorgularınızı oluşturmanıza olanak sağlar. Özellikle söz dizimi oldukça anlamlı ve kullanıcıların kodları anlayabileceği yapıdadır. ZN Framework'ün Database kütüphanesi ile oldukça zevkli ve keyif alarak kod yazacağınızı düşünüyoruz. Temel prensibi basitlik olan ZN Framework bu prensibini kütüphane içinde göstermeye çalışmıştır.

ZN Framework Veritabanı kütüphanesi SQL Injection saldırılarını engellemek amaçlı bazı önlemler almıştır. Tek tırnak (') içeren verilerde kesinlikle tırnak işareti HTML numerik koda çevrilerek kaydedilir. Çift tırnak kullanımına izin verilir ancak bazı riskleri azaltmak için güvenlik yöntemlerine yer verilmiştir. Sorgularınızda hiç bir güvenlik önlemi alınmasa dahi veri güvenliği yüksek düzeyde sağlanmıştır, ancak en gelişmiş güvenlik sistemlerinin dahi aşılabildiği günümüzde hiç kimse size veri güvenliği konusunda %100 garanti veremez.

 

 

# Kurulum


ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-database

 

 

# Yöntemler


This select(String ...$condition)
This where(Mixed $column, String $value = NULL, String $logical = 'AND')
This whereGroup(Array ...$args)
This having(Mixed $column, String $value = NULL, String $logical = 'AND')
This havingGroup(Array ...$args)
This groupBy(String ...$condition)
This orderBy(Mixed $condition, String $type = NULL)
This limit(Int $start = NULL, Int $limit = 0)
This get(String $table, String $return = 'object')
This tableNameGet(Void)
Object result(String $type = 'object')
Array resultArray(Void)
String resultJson(Void)
Object tableNameResult(Void)
Object row(Scalar $printable)
Object tableNameRow(Void)
String value(String $column = NULL)
Int totalRows(Bool $total = false)
Int totalColumns(Void)
Array columns(Void)
Object columnData(String $column)
String tableName(Void)
String pagination(String $url = NULL, Array $settings = [], Bool $output = true)
This status(String $table)
Bool isExists(String $table, String $column, String $value)
Bool insert(String $table = NULL, Array $datas = [])
This duplicateCheck(String ...$args)
This duplicateCheckUpdate(String ...$args)
Int insertID(Void)
Int affectedRows(Void)
Bool insertCSV(String $table, String $CSVFile)l
Bool update(String $table = NULL, Array $set = [])
Bool delete(String $table = NULL)
Bool increment(String $table = NULL, Mixed $columns = [], Int $increment = 1)
Bool decrement(String $table = NULL, Mixed $columns = [], Int $decrement = 1)
This query(String $query, Array $secure = [])
This basicQuery(String $query, Array $secure = [])
Bool execQuery(String $query, Array $secure = [])
Bool multiQuery(String $query, Array $secure = [])

 

 

# Select Genel Söz Dizimi


ZN'nin veritabanına ait seçim yöntemlerinin nasıl kullanılabileceğine dair genel söz dizimi aşağıda gösterilmiştir. get() yönteminden önce [...] şeklinde gösterilen yöntemler bir biri arasında yer değiştirebilir.

DB::[select(...$columns) | sum($column, 'as column name') | count($column, 'as column name') ... ]
  ->[distinct() | distinctRow() | maxStatementTime($time) | straightJoin() | highPriority() | lowPriority() | quick() | delayed() | ignore() | smallResult() | bigResult() | bufferResult() | cache() | nocache() | calcFoundRows()]
  ->[where($column, $value, $cond) | having(where($column, $value, $cond)]
  ->[whereGroup(Array ...$where) | havingGroup(Array ...$having)]
  ->[orderBy($column, $type) | groupBy($column)]
  ->[limit($start, $count)]
  ->[join($table, $cond, $type) | typeJoin($tableColumn, $otherTableColumn) > type(left, right, inner)]
  ->[union($table) | unionAll($table)]
  ->[partition(...$args) | procedure(...$args) | outFile($file) | dumpFile() | into($varname1, $varname2) | forUpdate() | lockInShareMode()]
  ->get($table) | tablename()
  ->[row() | result() | resultArray() | resultJson() | value() | totalColumns() | totalRows() | columns() | columnData() | pagination() | fetchArray() | fetchAssoc() | fetchRow() | fetch()]

 

 

# Select (ZN >= 0.0.1)


SQL SELECT deyiminin karşılığıdır. Kullanımı zorunlu değildir. Belli kolonlardan veriler isteniyorsa bu yöntem kullanılır.

Parametreler
String ...$columns = '*' Seçim sonucunda elde edilmesi istenilen kolonlar.
Return This
Kullanımı
$users = DB::select('id', 'name', 'address')->users();

echo $users->stringQuery();
SELECT id,name,address FROM users 

Tüm kolonlar alınacaksa select() kullanımına gerek yoktur. 

$users = DB::users();

output($users->result());

 

 

# Where (ZN >= 0.0.1)


SQL WHERE deyiminin karşılığıdır. Kullanımı zorunlu değildir. İşlemlerin belli koşullara dayandırılması gerektiği zaman kullanılır.

Parametreler - Tekli Form
String $columnName Kolon adı.
String $value Kolon değeri.
String $logical = 'AND' Bağlaç.
Seçenekler AND, OR
Return This
Parametreler - Çoklu Form
Array $columnAndValues Kolonlar ve değerler.
Return This
Kullanımı

Eşitlik kontrolünde = operatörü kullanılmak zorunda değildir.

$users = DB::where('id', 1)->users();

echo $users->stringQuery();

Eşitlik durumu dışındaki karşılaştırmalarda operatör kullanılmak zorundadır.

$users = DB::where('id !=', 1)->users();
Çoklu Koşul

Birden fazla where() bağlacıda kullanabilirsiniz.

$users = DB::where('id', 1) # Ön tanımlı AND
           ->where('name !=', 'ZN', 'or')
           ->where('name !=', 'ZN4')
           ->users();

echo $users->stringQuery();
SELECT *
FROM users
WHERE id = '1' and name != 'ZN' or name != 'ZN4'
Dizi Kullanımı

where() için 1. parametre dizi veri türüde içerebilir. Bu kullanım where() yöntemine birden fazla koşulu dizi içinde gönderebilme ihtiyacı içindir.

$users = DB::where
       ([
           ['id', 1, 'and'],
           ['name !=', 'ZN', 'or'],
           ['name !=', 'ZN4']
       ])
       ->users();

output($users->result());

echo $users->stringQuery();
SELECT *
FROM users
WHERE id = '1' and name != 'ZN' or name != 'ZN4'
Çevrimler (ZN >= 4.2.8)

Çevrimlerin amacı hem veri güvenliğini sağlamak hem de bazı kullanımlara izin vermek için oluşturulmuştur.

Int

Kolon değerini tam sayıya(integer) çevirmek için;

echo DB::where('int:columnName', 'Example')->string()->example();
SELECT * FROM tableName WHERE columnName = 0

Float

Kolon değerini ondalıklı sayıya(float) çevirmek için;

echo DB::where('float:columnName', 'Example')->string()->example();
SELECT * FROM tableName WHERE columnName = 0

Expression

Kolon değerini tırnaksız hale çevirmek için;

echo DB::where('exp:columnName', 'Example')->string()->example();
SELECT * FROM tableName WHERE columnName = Example

şeklinde kullanılır.

 

 

# WhereGroup (ZN >= 3.0.0)


Birden fazla koşulun kullanılması durumunda koşulun doğru oluşturulabilmesi için gruplanması gerekir. Bu yönteminde yaptığı iş birden fazla koşulu parantezlere alarak gruplamaktır.

Parametreler
Array $columnName Kolonlar ve değerleri.
Return This  
Kullanımı
$users = DB::whereGroup
(
    ['id', 1, 'or'],
    ['id', 2],
    'and'
)
->whereGroup
(
    ['name', 'ZN', 'and'],
    ['address', 'Istanbul']  
)
->users();

echo $users->stringQuery()
SELECT *
FROM users
WHERE ( id = '1' or id = '2' ) and ( name = 'zn' and address = 'istanbul' )

 

 

# Having (ZN >= 0.0.1)


SQL HAVING deyiminin karşılığıdır. Kullanımı where() ile bire bir aynı mantıktadır.

Parametreler - Tekli Form
String $columnName Kolon adı.
String $value Kolon değeri.
String $logical = NULL Bağlaç.
Seçenekler AND, OR
Return This  
Parametreler - Çoklu Form
Array $columnAndValues Kolonlar ve değerleri
Return This  

 

 

# HavingGroup (ZN >= 3.0.0)


Kullanımı whereGroup() ile bire bir aynı mantıktadır.

Parametreler
Array $columnName Kolonlar ve değerleri.
Return This  

 

 

# GroupBy (ZN >= 0.0.1)


SQL GROUP BY deyiminin karşılığıdır. Sorguda gruplama yapılacağı zaman kullanılır.

Parametreler
Array $columnName Kolonl adı.
Return This  
Kullanımı
echo DB::groupBy('name')->string()->users(); 
SELECT * FROM users GROUP BY name
Not: DB::string() sorgunun string çıktısını verir.

 

 

# OrderBy (ZN >= 0.0.1)


SQL ORDER BY deyiminin karşılığıdır. Sorguda sıralama yapılacağı zaman kullanılır.

Parametreler
String $column Kolon adı.
String $type Sıralama türü.
Return This  
Kullanımı
echo DB::orderBy('id', 'DESC')->where('id >', 10)->string->users();
SELECT * FROM users WHERE id > '10' ORDER BY id desc 

 

 

# Limit (ZN >= 0.0.1)


SQL LIMIT deyiminin karşılığıdır. Sorgu sonuçlarına limit uygulanacağı zaman kullanılır.

Parametreler
Scalar $start Limitlemeye kaçıncı kayıttan başlanacağı. 2. parametre kullanılmayacaksa limit belirtmek için kullanılır. DB::pagination() yöntemi ile kullanılıyorsa bu parametre NULL kullanılabilir.
Int $limit Kaç kayıt gösterileceği.
Return This
Kullanımı
echo DB::limit(10)->string()->users();
SELECT * FROM users LIMIT 10
echo DB::limit(5, 10)->string()->users();
SELECT * FROM users LIMIT 5 , 10

 

 

# Get (ZN >= 0.0.1)


Bu yöntem SELECT sorgusunu çıktı almak üzere neticelendirecek nihai yani son yöntemdir. Bir SELECT sorgusu get() yöntemi ile tamamlandıktan sonra 2. get() yönteminin kullanımından önce mutlaka sorgu sonuçlarının alınması gerekir. Bu yöntemden sonra ancak SELECT verilerini alacak olan sonuç yöntemleri kullanılabilir.

Parametreler
String $tableName Tablo adı.
Return This
Kullanımı
$users = DB::where('id !=', 1)->orderBy('date', 'ASC')->get('users');

DB::get() ile tamamlanan SELECT sorgularından sonra bu sorguya yönelik veriler alınabilir hale gelir.  

$products = DB::get('products');

$row     = $products->row();
$columns = $products->columns();
Tekil Kullanım (ZN >= 5.4.6)

Eğer get() yöntemini bir değişkene aktarmadan veya döngü içinde kullanacaksanız her döngüde sorguyu yeniden oluşturmamasını isterseniz basic() opsiyonel yönteminden yararlanabilirsiniz. Eğer get() yöntemini bir değişkene aktarmayı planlıyorsanız bu yöntemi kullanamazsınız

output(DB::basic()->get('users')->result());
output(DB::basic()->get('users')->row());

Bu kullanım yukarıda olduğu gibi çıktılama yöntemleri ile tamamlanan kullanımlarda geçerlidir.

 

 

# TableNameGet (ZN >= 5.2.0)


Belirtilen sürüm itibari ile ->get('tableName') yöntemi yerine ->tableName() de kullanılabilir. Yani doğrudan ulaşılmak istenen tablo adı yöntem olarak kullanılabilir hale getirildi. Örnek kullanımlarda zaten bu kullanıma yer verildiğini görebilirsiniz.

Parametreler
Void
Return Object
Kullanımı
$ticket = DB::ticket();
$blog = DB::blog();

 

 

# Result (ZN >= 0.0.1)


SELECT sorgu sonuçlarını array, object veya json türünde veren yöntemdir. Ön tanımlı değeri object türüdür.

Parametreler

Parametreler
String $outputType = 'object' Tabloda gelen veriler bu parametrenin değiştirilmemesi durumunda object türünde döner.
object Döngüye giren sonuçların her bir kayıtta kolon değerine ulaşmak için $row->columnName formunda ulaşılmasını sağlar.
array Döngüye giren sonuçların her bir kayıtta kolon değerine ulaşmak için $row['columnName'] formunda ulaşılmasını sağlar.
json Sonuçların json formunda getirilmesini sağlar.
Return Mixed
Kullanımı
$users = DB::limit(10)->users();

foreach( $users->result() as $result )
{
    \Output::writeLine('ID:{0} - Name:{1}', [$result->id, $result->name]);
}

Sonuçları dizi türünde almak için;

$users = DB::limit(10)->users();

foreach( $users->result('array') as $result )
{
    \Output::writeLine('ID:{0} - Name:{1}', [$result['id'], $result['name']]);
}

 

 

# ResultArray (ZN >= 0.0.1)


Sorgu sonuçlarını dizi türünde verir. DB::result('array') kullanımı ile aynıdır.

Parametreler
Void
Return Array
Kullanımı
echo DB::limit(10)->users()->resultArray();

 

 

# ResultJson (ZN >= 0.0.1)


Sorgu sonuçlarını json dizgesi türünde verir.

Parametreler
Void
Return String
Kullanımı
echo DB::limit(10)->users()->resultJson();

 

 

# TableNameResult (ZN >= 5.2.0)


Tablo adını kullanarak tabloya ait kayıtları almak için oluşturulmuş pratik kullanımdır.

Parametreler
String $outputType = 'object' Tabloda gelen veriler bu parametrenin değiştirilmemesi durumunda object türünde döner.
object Döngüye giren sonuçların her bir kayıtta kolon değerine ulaşmak için $row->columnName formunda ulaşılmasını sağlar.
array Döngüye giren sonuçların her bir kayıtta kolon değerine ulaşmak için $row['columnName'] formunda ulaşılmasını sağlar.
json Sonuçların json formunda getirilmesini sağlar.
Return Mixed
Kullanımı
$result = DB::blogResult();
$result = DB::ticketResult();

 

 

# Row (ZN >= 0.0.1)


Tek satır veriyi object türde almak için kullanılır. Parametresinin durumuna göre hem array hem de string türde değer döndürür.

Parametreler
String $type = 0 Kaçıncı kayıtın alınacağı.
1, 2, .... -1 Hangi indisli kayıtın alınacağıdır. Sondan kayıt getirmek için negatif değer verilebilir.
true Parametre true değeri alırsa seçili(muhtemelen id) ilk kolonun değerini verir
Return Object
Kullanımı
$users = DB::users();
$row = $users->row();

echo $row->id . ' - ' . $row->name;
Kayıt Indisi

Parametresine kayıt indeksi verebilirsiniz.

output($users->row(-1)); // Last row
output($users->row(0));  // First row
output($users->row(1));  // 2. row
Seçili Kolon Değeri

Parametresine true değeri vererek ilk kayıtın ilk kolonunun değerini çıktılatabilirsiniz.

echo $users->row(true); // First select column value

 

 

# TableNameRow (ZN >= 5.2.0)


Tablo adını kullanarak tabloya ait tek bir satır kayıtı almak için oluşturulmuş pratik kullanımdır.

Parametreler
Void
Return Object
Kullanımı
$blogRow = DB::blogRow();
$ticketRow = DB::ticketRow();

 

 

# Value (ZN >= 3.0.0)


Sorgu sonucuna ait kayıtın ilk veya belirtilen kolonunun değerini verir. DB::row(true) yönteminin yaptığı işi yapar.

Parametreler
5.7.0 String $column = NULL Parametre olarak belirtilen kolonun değerini döndürür. Herhangi bir değişiklik yapılmaz ise sorgu sonucuna ait kayıtın ilk kolon değerini verir.
Return String
Kullanımı
echo DB::where('id', 1)->select('name')->users()->value();
echo DB::select('sum(price)')->users()->value();

Bu yöntem özellikle 2. örnekte ki gibi kullanımlar için oluşturulmuştur.

5.7.0 Güncellemesi

Bu güncelleme ile artık parametre olarak kolon adı belirtilebilmektedir.

echo DB::users()->value('name');

Yukarıdaki kullanım users tablosuna ait bulunan ilk kayıtın name kolonuna ait değeri döndürür.

Kısa Kullanım (5.2.0)

Daha kısa yoldan aşağıdaki gibi tek bir kolon değerine ulaşabilirsiniz.

echo DB::whereId(1)->usersRowName();

 

 

# TotalRows (ZN >= 0.0.1)


Sorgu sonucu toplam kayıt sayısını verir.

Parametreler
Bool $realLimit = false Kayıt sayısı. Parametre true ayarlanırsa LIMIT kullanımından etkilenmez ve kayıt sayısını döndürür.
Return Int
Kullanımı
$users = DB::limit(5)->users();

echo $users->totalRows();     # 5
echo $users->totalRows(true); # 100
Gerçek Kayıt Sayısı

2. parametrenin true ayarlanması durumunda sorguda var olan LIMIT gerçek kayıt sayısına ulaşılmasını engellemez.

echo DB::limit(5)->users()->totalRows(true); # 100

 

 

# TotalColumns (ZN >= 0.0.1)


Sorgu sonucu tablonun kolon sayısını verir.

Parametreler
Void
Return Int
Kullanımı
echo DB::users()->totalColumns();

 

 

# Columns (ZN >= 0.0.1)


Sorgu sonucu tablonun kolonlarını dizi türünde verir.

Parametreler
Void
Return Array
Kullanımı
output( DB::users()->columns() );

 

 

# ColumnData (ZN >= 0.0.1)


Sorgu sonucu tablonun kolonlarını ve kolonlara ait bilgileri verir. Parametre belirtilmezse tüm kolonları parametre belirtilirse sadece belirtilen kolon bilgilerini verir.

Parametreler
String $column = NULL Kolonlarla ilgili bilgi dizisi döner.  Parametre belirtilmezse tüm kolonların bilgi dizisi döner.
Return Array String name Kolon adı.
Int type Tür.
Int maxLength Kolon uzunluğu.
Int primaryKey Birincil anahtar.
String default Varsayılan.
Kullanımı
$users = DB::users();

output($users->columnData());
output($users->columnData('id'));

 

 

# TableName (ZN >= 2.0.0)


Kendinden önceki sorguda kullanılan tablonun ismini verir.

Parametreler
Void
Return String
Kullanımı
$users = DB::users();

echo DB::tableName();
users

 

 

# Pagination (ZN >= 2.0.0)


Sorgunuza göre sayfalama barı oluşturur. Sorguya göre şekillendiği için Pagination sınıf kullanmanıza gerek kalmadan çok daha basit bir şekilde sayfalama işlemi yapmış olursunuz. Saymalama işlemi için limit() yönteminin kullanılması zorunludur. Sayfalama ile ilgili görünüm yapılandırmaları için aşağıdaki dosya kullanılır.

Yapılandırma: Config/ViewObjects.php -> pagination
Parametreler
String $url = NULL Sayfa kayıt numarasının nereye ekleneceği. NULL tanımlı kalırsa aktif URL'nin sonuna eklenir.
Array $config = [] Yapılandırmayı dosya yerine parametre olarak yapmak için kullanılır.
Return String
Kullanımı
$users = DB::limit(NULL, 10)->users();

output($users->result());
output($users->pagination());
URL Parametresi

pagination() yöntemine parametre belirtilmezse mevcut URL üzerinden işlem yapar ve sayfalama ile ilgili kayıt numarası URL'nin sonuna eklenir. Şayet URL'deki son bölüm kayıt sayısı bilgisi olmayacaksa bu durumda 1. parametre'ye URL belirtmeniz gerekir. Aşağıda ki örnekte kayıt numarası bilgisinin URL sonunda olmadığında pagination() yönteminin 1. parametresinin nasıl kullanılacağı üzerinedir.

output($users->pagination('products/'.URI::segment(2).'/order/asc'));
Parametrik Yapılandırma

Doğrudan config dosyası yerine parametre olarak sayfalama ayarları yapmak isterseniz. pagination() yönteminin 2. parametresinden yararlanılır.

output($users->pagination(NULL, ['prevName' => 'prev', 'nextName' =>'next']));

 

 

# Status (ZN >= 2.0.0)


İlgili tablonun durumu hakkında bilgi verir.

Parametreler
String $table Tablo adı.
Return This
Kullanımı
output( DB::status('users')->row() ); 
Dizide Yer Alan Değerler
Name            => string 'users' ( length = 5 ),
Engine          => string 'InnoDB' ( length = 8 ),
Version         => string '10' ( length = 4 ),
Row_format      => string 'Compact' ( length = 9 ),
Rows            => string '4' ( length = 3 ),
Avg_row_length  => string '4096' ( length = 6 ),
Data_length     => string '16384' ( length = 7 ),
Max_data_length => string '0' ( length = 3 ),
Index_length    => string '0' ( length = 3 ),
Data_free       => string '0' ( length = 3 ),
Auto_increment  => string '34' ( length = 4 ),
Create_time     => string '2016-08-18 17:28:53' ( length = 21 ),
Update_time     => NULL ( length = 0 ),
Check_time      => NULL ( length = 0 ),
Collation       => string 'utf8_general_ci' ( length = 15 ),
Checksum        => NULL ( length = 0 ),
Create_options  => string '' ( length = 2 ),
Comment         => string '' ( length = 2 )

 

 

# IsExists (ZN >= 4.6.0)


Tabloda belirtilen kolon ve değerinin olup olmadığını kontrol eder. Değer varsa true aksi halde false döner.

Parametreler
String $table Tablo adı.
String $column Kolon adı.
String $value Değer.
Return Bool
Kullanımı
if( DB::isExists('Users', 'name', 'John') )
{
     # Your codes...
}

 

 

# Insert (ZN >= 0.0.1)


SQL INSERT INTO TABLE VALUES deyiminin karşılığıdır. Kayıt eklemek için kullanılır. Ekleme işlemi oldukça kolaydır.

Parametreler
String $table Tablo adı.
Mixed $data Eklenecek veriler.
Return This
Kullanımı
DB::insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);
Opsiyonel Yöntemler
This duplicateCheck(String ...$args)
This duplicateCheckUpdate(String ...$args)
Tekrar Engeli

Eğer eklenen veriden daha önce kayıt yapılmışsa bunu engellemek için duplicateCheck() yönteminden yararlanılır. Eğer belirli kolonların kontrolü yapılmak istenirse parametre içerisine sırayla belirtilebilir.

DB::duplicateCheck()->insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);

Sadece name kolonunu kontrol edelim.

DB::duplicateCheck('name')->insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);

Yukarıdaki kullanımlarda belirtilen koşullara göre kolon değerleri aynı ise işlem false döner.

Eğer aynı kolonlardan varsa ve insert yerine update ettirmek isterseniz duplicateCheckUpdate() yöntemi kullanılır.

DB::duplicateCheckUpdate()->insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);
Tekrar Değişimi

Sadece name kolonunu kontrol edelim. Eğer name kolonu aynı değerle daha önce kaydedilmişse o veri güncellenir.

DB::duplicateCheckUpdate('name')->insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);

Yukarıdaki kullanımlarda belirtilen koşullara göre kolon değerleri aynı ise işlem update edilir ve update başarılı ise true döner.

Opsiyonel Kullanım

Kolon değerlerini aşağıdaki gibi de insert edebilirsiniz.

DB::column('name', 'NewName')
  ->column('address', 'NewAddress')
  ->insert('users');
Otomatik Eşleştirme (ZN >= 4.3.0)

Bir dizideki veya Formdan gelen metot dizisinideki verileri kolonlarla otomatik olarak eşleştirip kaydettirmek için tablo adına ignore: ön eki getirilir.

DB::insert('ignore:users', Method::post());
DB::insert('ignore:users', Method::get());
Post Gönderimi (ZN >= 4.3.0)

Bu kullanım size POST metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt ekleme işlemi gerçekleştirilir.

DB::insert('post:users');
Veri Manipülasyonu

POST dizisine kendiniz de değer eklemek isterseniz aşağıdaki gibi kullanabilirsiniz.

Post::add_date(date('Y-m-d-h-i-s'));
Post::ip(User::ip());

DB::insert('post:users');

Yukarıdaki kullanım diğer gönderim metotları içinde geçerlidir.

Get Gönderimi (ZN >= 4.3.0)

Bu kullanım size GET metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt ekleme işlemi gerçekleştirilir.

DB::insert('get:users');
Request Gönderimi (ZN >= 4.3.0)

Bu kullanım size REQUEST metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt ekleme işlemi gerçekleştirilir.

DB::insert('request:users');
Json Çevrimi (ZN >= 6.0.0)

Gelen verinin array türünden veri olması durumunda veri otomatik olarak json türüne çevrilerek kaydedilir.

DB::insert('products', ['colors' => ['red', 'blue', 'green']]);

 

 

# TableNameInsert (ZN >= 5.2.0)


Tablo adına göre data eklemek için kullanılır.

Parametreler
Array $data Eklenecek veriler.
Return Bool
Kullanımı
DB::usersInsert(['name' => 'micheal']);

 

 

# InsertID (ZN >= 1.0.0)


Eklenen son kayıtın id değerini verir. Genellikle bir ekleme işleminden sonra ilgili kaydın id'si kullanılarak işlem yapmayı gerektiren durumlarda kullanılır.

Parametreler
Void
Return Int
Kullanımı
DB::insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);

echo DB::insertID(); # 37

 

 

# AffectedRows (ZN >= 0.0.1)


Son sorgu işlemlerinden etkilenen kayıt sayısını verir. Bu işlem bir ekleme, silme, güncelleme gibi kayıtları etkileyen durumlarda sonuç verir.

Parametreler
Void
Return Int
Kullanımı
DB::insert('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);

echo DB::affectedRows(); # 1

 

 

# InsertCSV (ZN >= 5.3.9)


CSV Dosyasında yer alan kolon ve değerler tabloya eklemek için kullanılır. Bunun için CSV dosyasının en üst satırı kolon isimlerinden oluşmalıdır.

Örnek CSV Dosyası

+-----------------------------------------------------------------+
| users_file.csv                                                  |
+----+----------------+---------------------------+---------------+
| id | name           | address                   | phone         |
+----+----------------+---------------------------+---------------+
| 1  | Micheal        | Italy                     | 12345         |
+----+----------------+---------------------------+---------------+
| 2  | Susan          | France                    | 54321         |
+----+----------------+---------------------------+---------------+

Parametreler
String $table Kaydedilecek tablo adı.
String $file CSV dosyasının yolu. Uzantısı yazılmaz.
Return Bool
Kullanımı
DB::insertCSV('users', 'users_file');

 

 

# Update (ZN >=0.0.1)


SQL UPDATE TABLE SET deyiminin karşılığıdır. Kayıtları güncellemek için kullanılır. Kullanımı oldukça basittir.

Parametreler
String $table Tablo adı.
Mixed $data Güncellenecek veriler.
Return Bool
Kullanımı
DB::where('id', 1)->update('users',
[
    'name'    => 'NewName',
    'address' => 'NewAddress'
]);
Opsiyonel Kullanım

Kolon değerlerini aşağıdaki gibi de update edebilirsiniz.

DB::where('id', 1)
  ->column('name', 'NewName')
  ->column('address', 'NewAddress')
  ->update('users');
Otomatik Eşleştirme (ZN >= 4.3.0)

Bir dizideki veya Formdan gelen metot dizisinideki verileri kolonlarla otomatik olarak eşleştirip güncellemek için tablo adına ignore: ön eki getirilir.

DB::where('id', 1)->update('ignore:users', Method::post());
DB::where('id', 1)->update('ignore:users', Method::get());
Post Gönderimi (ZN >= 4.3.0)

Bu kullanım size POST metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt güncelleme işlemi gerçekleştirilir.

DB::where('id', 1)->update('post:users');
Veri Manipülasyonu

POST dizisine kendiniz de değer eklemek isterseniz aşağıdaki gibi kullanabilirsiniz.

Post::add_date(date('Y-m-d-h-i-s'));
Post::ip(User::ip());

DB::insert('post:users');

Yukarıdaki kullanım diğer gönderim metotları içinde geçerlidir.

Get Gönderimi (ZN >= 4.3.0)

Bu kullanım size GET metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt güncelleme işlemi gerçekleştirilir.

DB::where('id', 1)->update('get:users');
Request Gönderimi (ZN >= 4.3.0)

Bu kullanım size REQUEST metodu aracılığı ile tek tek göndermek zorunda olduğunuz değerleri, kolon isimleriyle eşleştirerek otomatik olarak işleyebilmenizi sağlar. Bu yöntem sayesinde 2. parametrenin kullanılmasına gerek kalmadan çok basit bir şekilde kayıt güncelleme işlemi gerçekleştirilir.

DB::where('id', 1)->update('request:users');
Json Çevrimi (ZN >= 6.0.0)

Gelen verinin array türünden veri olması durumunda veri otomatik olarak json türüne çevrilerek kaydedilir.

 

 

# TableNameUpdate (ZN >= 5.2.0)


Tablo adına göre data güncellemek için kullanılır.

Parametreler
Array $data Güncellenecek veriler.
Return Bool
Kullanımı
DB::whereId(1)->usersUpdate(['name' => 'micheal']);

 

 

# Delete (ZN >= 0.0.1)


SQL DELETE FROM TABLE deyiminin karşılığıdır. Kayıt silmek için kullanılır.

Parametreler
String $table Tablo adı.
Return Bool
Kullanımı
DB::where('id', 1)->delete('users');

 

 

# TableNameDelete (ZN >= 5.2.0)


Tablo adına göre data silmek için kullanılır.

Parametreler
Void
Return Bool
Kullanımı
DB::whereId(1)->usersDelete();

 

 

# Increment (ZN >= 2.0.0)


Bir tablodaki belirtilen kolonların değerini istenilen miktarda artırmak için kullanılır. Ön tanımlı artırım değeri 1'dir.

Parametreler
String $table Artırım yapılacak tablo adı.
Mixed $column Artırım yapılacak kolon veya kolonlar.
Int $count = 1 Artırım miktarı.
Return Bool
Kullanımı
DB::increment('users', 'activityCount');     // Increment 1
DB::increment('users', 'activityCount', 10); // Increment 10 
Çoklu Artırım

Birden fazla kolonda aynı anda artırım yapmak için;

DB::increment('users', ['activityCount', 'loginCount'], '10'); // Increment 10

Yukarıda hem activityCount hemde loginCount kolonlarının değeri 10 artırılmıştır.

 

 

# Decrement (ZN >= 2.0.0)


Bir tablodaki belirtilen kolonların değerini istenilen miktarda azaltmak için kullanılır. Ön tanımlı azaltım değeri 1'dir.

Parametreler
String $table Azaltım yapılacak tablo adı.
Mixed $column Azaltım yapılacak kolon veya kolonlar.
Int $count = 1 Azaltım miktarı.
Return Bool
Kullanımı
DB::decrement('users', 'activityCount');     // Decrement 1
DB::decrement('users', 'activityCount', 10); // Decrement 10 
Çoklu Azaltım

Birden fazla kolonda aynı anda azaltım yapmak için;

DB::decrement('users', ['activityCount', 'loginCount'], '10'); // Decrement 10

Yukarıda hem activityCount hemde loginCount kolonlarının değeri 10 azaltılmıştır.

 

 

# Query (ZN >= 0.0.1)


Standart SQL sorguları yazmak için kullanılır. Bu yöntemin kullanımın SELECT üzerine yapılmışsa gelen verileri result(), row() gibi yöntemleri kullanarak alabilirsiniz. Yani get() yönteminden sonra kullanılabilen çıktı alma yöntemlerinin tamamı kullanılabilir. Standart SQL sorguları enjeksiyon saldırılarına açık olduğu için özellikle dışarıdan SQL enjeksiyonu yapılabilecek yerlerde kullanılmamalıdır. Mecbur kalmadıkça kullanmamanız önerilir. Kullanmak zorunda olursanız güvenlik için secure() yöntemini mutlaka kullanmaya özen gösteriniz.

Parametreler
String $query SQL sorgusu.
Return This
Kullanımı
$query = DB::query('SELECT * FROM users');
output($query->result());
Güvenlik Süzgeci

Güvenlik secure() yönteminin kullanımı;

Belirleyici Kullanım
DB::secure([':x' => 1, ':y' => 'ZN'])
  ->query('SELECT * FROM users WHERE id = :x or name = ":y"');
Sıralı Kullanım
DB::secure([1, 'ZN'])
  ->query('SELECT * FROM users WHERE id = ? or name = "?"')

Bu sayede süzgeçten geçirilmesini istediğiniz verileri belirlemiş olursunuz.

 

 

# BasicQuery (ZN >= 4.3.5)


Standart SQL sorgusu çalıştırmak için kullanılır.

Parametreler
String $query SQL sorgusu.
Return This
Kullanımı
$query = DB::basicQuery('SELECT * FROM ExampleTable');

output($query->result());

 

 

# ExecQuery (ZN >= 0.0.1)


Tek seferlik çalıştırılabilir sorgular için kullanılır. SELECT deyimi içeren sonuç alma sorguları ile kullanılamazlar. CREATE, INSERT, ALTER, DROP, DELETE gibi sorgularla kullanımı tavsiye edilir. query() yönteminin kullanımı ile aynı mantıktadır.

Parametreler
String $query SQL sorgusu.
Return Bool
Kullanımı
DB::execQuery('DROP TABLE products');

 

 

# MultiQuery (ZN >= 3.0.0)


Birden fazla sorguyu çalıştırmak için kullanılır. SELECT deyimi içeren sonuç alma sorguları ile kullanılamazlar. CREATE, INSERT, ALTER, DROP, DELETE gibi sorgularla kullanımı tavsiye edilir. query() yönteminin kullanımı ile aynı mantıktadır.

Parametreler
String $query SQL sorgusu.
Return Bool
Kullanımı
DB::multiQuery('DROP TABLE products; CREATE TABLE contact(...)');