Koşul Deyimleri


    × Bunları biliyor muydunuz?
"Şablon sihirbazında (Wizard) (5.5.60) sürümünden beri döngülerin sonunda kullanılan : sembolünün kullanım zorunluluğu kaldırılmıştır."


ZN Framework çok sayıda farklı koşul kullanımlarını destekler. Standart DB::where() kullanımına alternatif olarak kullanabileceğiniz bir çok yöntem aşağıda anlatılmıştır.

 

 

# Yöntemler


DB::whereAnd(string $column, string $value) : this
DB::whereOr(string $column, string $value) : this
DB::whereNot(string $column, string $value, string $logical = 'AND') : this
DB::whereLike(string $column, string $value, string $logical = 'AND') : this
DB::whereStartLike(string $column, string $value, string $logical = 'AND') : this
DB::whereEndLike(string $column, string $value, string $logical = 'AND') : this
DB::whereBetween(string $column, string $value1, string $value2, string $logical = 'AND') : this
DB::whereIn(string $column, array $values, string $logical = 'AND') : this
DB::whereNotIn(string $column, array $values, string $logical = 'AND') : this
DB::whereInTable(string $column, string $value, string $logical = 'AND') : this
DB::whereInQuery(string $column, string $value, string $logical = 'AND') : this
DB::whereJson(string $column, string $value = NULL, string $logical = 'AND') : this
DB::whereNotJson(string $column, string $value = NULL, string $logical = 'AND') : this
DB::whereFulltext(string $column, string $value, string $type = NULL, string $logical = 'AND') : this
DB::whereEmpty(string $column, $str $logical = 'AND') : this
DB::whereNotEmpty(string $column, $str $logical = 'AND') : this
DB::whereNull(string $column, $str $logical = 'AND') : this
DB::whereNotNull(string $column, $str $logical = 'AND') : this
DB::whereColumnnameCondition(scalar $data) : this

 

 

# Örnek Tablo


Aşağıdaki gibi örnek bir veri tablosuna göre hangi yöntemlerle hangi sonuçları elde edeceğimizi görelim.

blogs
id title content
1 hello {"tr":"Merhaba", "en":"Hello"}
2 goodbye {"tr":"Güle güle", "en":"Goodbye"}
3 howareyou {"tr":"Nasilsin?", "en":"How are you?"}

 

 

# WhereAnd


Koşulları AND bağlacı ile bağlar.

string $columnName Kolon adı.
string $value Kolon değeri.
return this

Kullanımlar

$blogs = DB::whereAnd('id', 2)->where('title', 'goodbye')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE id = '2' AND title = 'goodbye' 

 

 

# WhereOr 


Koşulları OR bağlacı ile bağlar.

string $columnName Kolon adı.
string $value Kolon değeri.
return this

Kullanımlar

$blogs = DB::whereOr('id', 2)->where('id', 2)->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '1' ( length = 3 )
        title => string 'hello' ( length = 7 )
        content => string '{"tr":"Merhaba", "en":"Hello"}' ( length = 32 )

1 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE id = '1' OR id = '2' 

 

 

# WhereNot 


Kolonu eşit değiline (!=) göre karşılaştırır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereNot('id', 1)->whereNot('id', 2)->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '3' ( length = 3 )
        title => string 'howareyou' ( length = 11 )
        content => string '{"tr":"Nasilsin?", "en":"How are you?"}' ( length = 41 )
SELECT * FROM blogs WHERE id != '1' and id != '2'

 

 

# WhereLike 


Kolonun değerinde içinde geçeni (%value%) arama yapmak için kullanılır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereLike('title', 'bye')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE title like '%bye%' 

 

 

# WhereStartLike 


Kolonun değerinde ile başlayanı (value%) aramak için kullanılır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereStartLike('title', 'how')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '3' ( length = 3 )
        title => string 'howareyou' ( length = 11 )
        content => string '{"tr":"Nasilsin?", "en":"How are you?"}' ( length = 41 )
SELECT * FROM blogs WHERE title like 'how%' 

 

 

# WhereEndLike 


Kolonun değerinde ile biteni (%value) aramak için kullanılır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereEndLike('title', 'you')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '3' ( length = 3 )
        title => string 'howareyou' ( length = 11 )
        content => string '{"tr":"Nasilsin?", "en":"How are you?"}' ( length = 41 )
SELECT * FROM blogs WHERE title like '%you' 

 

 

# WhereBetween 


Belirtilen değerler de dahil arasındaki verileri getirmek için kullanılır. BETWEEN value1 AND value2 SQL söz diziminin karşılığıdır.

string $columnName Kolon adı.
string $value1 Başlangıç değeri
string $value2 Bitiş değeri.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereBetween('id', 1, 2)->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '1' ( length = 3 )
        title => string 'hello' ( length = 7 )
        content => string '{"tr":"Merhaba", "en":"Hello"}' ( length = 32 )

1 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE id between 1 AND

 

 

# WhereIn 


Kolonun belirtilen değerler arasında olup olmadığını kontrol eder. Eğer arasında ise sonuçları getirir.

string $columnName Kolon adı.
array $values Kolonun içinde aranacağı değerler.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereIn('id', [3, 4, 7])->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '3' ( length = 3 )
        title => string 'howareyou' ( length = 11 )
        content => string '{"tr":"Nasilsin?", "en":"How are you?"}' ( length = 41 )
)
SELECT * FROM blogs WHERE id in (3,4,7) 

 

 

# WhereNotIn 


Kolonun belirtilen değerler arasında olup olmadığını kontrol eder. Eğer arasında değilse sonuçları getirir.

string $columnName Kolon adı.
array $values Kolonun içinde aranacağı değerler.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereNotIn('id', [1, 3, 4])->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE id not in (1,3,4) 

 

 

# WhereJson (ZN >= 5.6.3 & MySQL >= 5.7)


Yukarıda belirtilen sürümler itibari ile JSON veri tutan kolon içinden eşleşen değere göre sonuçları getirmek için kullanılır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = NULL Bağlaç.
Seçenekler AND, OR
return this

Kullanımlar

$blogs = DB::whereJson('content', 'Goodbye')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE JSON_SEARCH(content, 'one', 'Goodbye') IS NOT NULL 

 

 

# WhereNotJson (ZN >= 5.6.3 & MySQL >= 5.7)


Yukarıda belirtilen sürümler itibari ile JSON veri tutan kolon içinden eşleşmeyen değere göre sonuçları getirmek için kullanılır.

string $columnName Kolon adı.
string $value Kolon değeri.
string $logical = NULL Bağlaç.
Seçenekler AND, OR
return this

Kullanımlar

$blogs = DB::whereNotJson('content', 'Goodbye')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '1' ( length = 3 )
        title => string 'hello' ( length = 7 )
        content => string '{"tr":"Merhaba", "en":"Hello"}' ( length = 32 )

1 => object 

        id => string '3' ( length = 3 )
        title => string 'howareyou' ( length = 11 )
        content => string '{"tr":"Nasilsin?", "en":"How are you?"}' ( length = 41 )
SELECT * FROM blogs WHERE JSON_SEARCH(content, 'one', 'Goodbye') IS NULL 

 

 

# WhereFulltext


Full-text arama yapabilmek için aramanın yapıldığı kolona FULLTEXT indeksi atanmış olmalıdır. Bu işlemden sonra bu kullanım aranan ifadenin en çok geçtiği sonuçtan en aza doğru sıralayarak bulunan kayıtları listeler.

string $columnName Kolon adı.
string $value = NULL Aranan ifade.
string $type Tür.
Seçenekler boolean, booleanExpansion, language, languageExpansion
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereFulltext('content', 'e')->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '1' ( length = 3 )
        title => string 'hello' ( length = 7 )
        content => string '{"tr":"Merhaba", "en":"Hello"}' ( length = 32 )

1 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE MATCH(content) AGAINST('e')
Dikkat: Bu yöntem MySQL 5.6 ve üzeri sürümlerde çalışmaktadır.

 

 

# WhereEmpty [6.2.0]


Kolon NULL veya boş (string empty) mu kontrol eder.

string $columnName Kolon adı.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereEmpty('title')->blogs();

output($blogs->stringQuery());
SELECT * FROM blogs WHERE ( title = "" or title is null )

 

 

# WhereNotEmpty [6.2.0]


Kolon NOT NULL ve boş (string empty) değil mi kontrol eder.

string $columnName Kolon adı.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereNotEmpty('title')->blogs();

output($blogs->stringQuery());
SELECT * FROM blogs WHERE ( title != "" and title is not null )

 

 

# WhereNull [6.2.0]


Kolon NULL mu kontrol eder.

string $columnName Kolon adı.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereNull('title')->blogs();

output($blogs->stringQuery());
SELECT * FROM blogs WHERE ( title is null )

 

 

# WhereNotNull [6.2.0]


Kolonun NOT NULL mu kontrol eder.

string $columnName Kolon adı.
string $logical = 'AND' Bağlaç
return this

Kullanımlar

$blogs = DB::whereNotNull('title')->blogs();

output($blogs->stringQuery());
SELECT * FROM blogs WHERE ( title is not null )

 

 

# WhereColumnnameCondition


Bu özel WHERE kullanımı istenilen kolon adı ve bağlaç türüne göre ekstra parametre kullanılmadan istenilen WHERE yapısı oluşturmak için tasarlanmıştır. Yöntem adında istenilen kolon ve birleştirilecek başka WHERE yapısı varsa bağlaç isimleri belirtilerek kullanılır.

scalar $value Kolon değer.
return this  

Kullanımı

$blogs = DB::whereTitleOr('Goodbye')->whereId(1)->blogs();

output($blogs->result());

output($blogs->stringQuery());
0 => object 

        id => string '1' ( length = 3 )
        title => string 'hello' ( length = 7 )
        content => string '{"tr":"Merhaba", "en":"Hello"}' ( length = 32 )

1 => object 

        id => string '2' ( length = 3 )
        title => string 'goodbye' ( length = 9 )
        content => string '{"tr":"Güle güle", "en":"Goodbye"}' ( length = 38 )
SELECT * FROM blogs WHERE title = 'Goodbye' Or id = '1'