Koşul Deyimleri
"Dinamik bir kütüphaneyi tanımlarken sınıf isminin başına Internal ön eki getirirerek statik erişimli hale getirebilirsiniz. "
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
# Ö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 2
# 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')
# 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'