2010-09-26 23 views
13
ile

"NEREDE sütun NEREDE YOK" Kohana Oluşturucu IS DEĞİL NULL kullanıcı işlevini kullanmak için kullanılabilir mi? BenKohana v3 Sorgu Oluşturucusu

->where('col', 'IS NOT NULL', '') 

o inşa eder ve geçersiz sorgu örneğin belirtmek bile

($ kolonu, $ op $ değer) yöntemi nerede her üç parametre gerekir ve.

SELECT * FROM table WHERE col IS NOT NULL ''; 
+3

v3 sadece iyi. ve çok yakındın! Yapmanız gereken tek şey, NULL'u değer argümanına taşıdı: '-> nerede ('col', 'IS DEĞİL', NULL)' – SpadXIII

+0

Artık v3’ün daha iyi dokümanları var ve buna alışmak için bir şansım oldu. Bunu iyice zevk alıyorum. – JeremyFelix

cevap

23

operatör kaçmış değildir:

->where('col', 'IS NOT', NULL) 

DB :: expr kullanmak gerek yok, Kohana zaten istediğini destekler.

3

Emin değilim ama ->where('col', '', DB::expr('IS NOT NULL')) kudreti işleri (şu anda 03:00 bulunuyor).

+0

GENIUS. Siz efendim, bir azizsiniz. – JeremyFelix

+0

Sanırım ikinci argüman ve sadece NULL olan değer olarak 'IS DEĞİL' koymak daha iyidir. Tıpkı Gerry'nin yanıtladığı gibi. DB :: expr kullanmak güzeldir, ancak gereksiz ekstra yük ekler (bu durumda) – SpadXIII

+2

Evet en iyi çözüm -> nerede ('col', 'IS NOT', NULL) – JeremyFelix

9

Bu, ORM modülü ile çalışır ve biraz daha az yazarak.

->where('col', '!=', NULL); 
+0

Bu gerçekten çalışıyor mu? Üretilen sorgu nedir? –

-1

Bu çalışması gerekir:

->where('col', '=', NULL); 
+0

u bu kez kaçırdı :) – Kemo

+0

Bu değerin sıfır olduğunu kontrol ediyor, OP istediği null değil. –

0

WHERE yan tümcesi, her zaman backtick biçimine (yani, 'table`.`field`) dönüştürülmeye çalışan 1 ve 3 numaralı 3 bağımsız değişken alır. Sürece en az 3 argüman üzerinde DB ::, İfade tedarik gibi, sen 1. ve 2. args şey bırakmadıklarını kurtulabilir ve aşağıdaki yanı çalışması gerekir: Bu çalışmaya teyit edilir

->where('', '', DB::Expr('!isNull(col)')); 

Kohana 3.2 ve üzeri.