Veritabanı Koşul Deyimleri


    × Bunları biliyor muydunuz?
"Kontrolcü yöntemlerine parametre olarak enjekte edilen sınıfların örneklerine aynı zamanda görünmlerinden de erişebilirsiniz."


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


5.6.3 This whereAnd(String $column, String $value)
5.6.3 This whereOr(String $column, String $value)
5.6.3 This whereNot(String $column, String $value, String $logical = 'AND')
5.6.3 This whereLike(String $column, String $value, String $logical = 'AND')
5.6.3 This whereStartLike(String $column, String $value, String $logical = 'AND')
5.6.3 This whereEndLike(String $column, String $value, String $logical = 'AND')
5.6.3 This whereBetween(String $column, String $value1, String $value2, String $logical = 'AND')
5.6.3 This whereIn(String $column, Array $values, String $logical = 'AND')
5.6.3 This whereNotIn(String $column, Array $values, String $logical = 'AND')
5.6.3 This whereInTable(String $column, String $value, String $logical = 'AND')
5.6.3 This whereInQuery(String $column, String $value, String $logical = 'AND')
5.6.3 This whereJson(String $column, String $value = NULL, String $logical = 'AND')
5.6.3 This whereNotJson(String $column, String $value = NULL, String $logical = 'AND')
5.7.4 This whereFulltext(String $column, String $value, String $type = NULL, String $logical = 'AND')
5.2.0 This whereColumnnameCondition(Scalar $data)

 

 

# Ö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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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.

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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 (ZN >= 5.6.3)


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

Parametreler

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.

Parametreler

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.

Parametreler

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 (ZN >= 5.7.4 & MySQL >= 5.6)


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.

Parametreler

5.7.4 String $columnName Kolon adı.
5.7.4 String $value = NULL Aranan ifade.
5.7.4 String $type Tür.
Seçenekler boolean, booleanExpansion, language, languageExpansion
5.7.4 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')

 

 

# WhereColumnnameCondition (ZN >= 5.2.0)


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.

Parametreler

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'