2010-09-26 32 views
13

Kohana可能嗎v3查詢生成器使用IS NOT NULL運算符嗎?Kohana v3查詢生成器的「WHERE列IS NOT NULL」

的地方($柱,$運算,$ value)方法要求所有三個參數,即使我指定

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

它建立和無效的查詢如。

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

v3就好了。你太親近了!所有你需要做的,是將NULL移動到值參數:' - > where('col','IS NOT',NULL)' – SpadXIII 2010-09-27 08:46:28

+0

現在v3有更好的文檔,我有機會習慣它 - 我很享受它。 – JeremyFelix 2011-04-03 10:25:06

回答

23

算不算轉義:

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

無需使用DB :: expr的,Kohana中已經支持你想要什麼。

3

不知道(現在是凌晨3點),但->where('col', '', DB::expr('IS NOT NULL'))可能有效。

+0

GENIUS。你是先生,是聖人。 – JeremyFelix 2010-09-26 01:19:50

+0

我認爲最好把'IS NOT'作爲第二個參數,其值只是NULL。就像Gerry回答。使用DB :: expr很不錯,但增加了不必要的額外開銷(在這種情況下) – SpadXIII 2010-09-27 08:45:09

+2

是的最佳解決方案是 - > where('col','IS NOT',NULL) – JeremyFelix 2010-11-10 19:28:47

9

這適用於ORM模塊,輸入少一些。

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

這是否真的有效?生成的查詢是什麼? – 2011-08-13 19:08:44

-1

這應該工作:

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

你錯過了這次:) – Kemo 2011-01-24 10:05:23

+0

這是檢查的價值爲空,OP想不是空。 – 2011-02-06 17:40:52

0

WHERE子句有3個參數,第1個和第3個總是試圖轉換爲反引號格式(即`table`.`field`)。只要你提供的DB :: Expr的至少在第三個參數,你可以離開沒有在第一和第二ARGS脫身,下面應該工作以及:

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

這證實上下工夫Kohana 3.2及以上版本。

相關問題