2010-09-26 20 views
13

Czy to możliwe z Kohana v3 Konstruktor zapytań do korzystania z operatora IS NIE NULL?"GDZIE kolumna NIE JEST NULL" z Kohana v3 Query Builder

WHERE ($ kolumna $ op, $ value) metoda wymaga, aby wszystkie trzy parametry, a nawet gdybym określić

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

to buduje i nieprawidłową zapytania np.

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

v3 jest w porządku. a ty byłeś tak blisko! Wszystko co musisz zrobić, to przenieść NULL na argument wartości: '-> where ('col', 'IS NOT', NULL)' – SpadXIII

+0

Teraz v3 ma lepsze dokumenty i miałem szansę przyzwyczaić się do to - cieszę się tym dokładnie. – JeremyFelix

Odpowiedz

23

Operator nie uciekł:

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

Nie trzeba używać DB :: expr, Kohana już wspiera to, co chcesz.

3

Nie wiem (to 3 AM teraz) ale ->where('col', '', DB::expr('IS NOT NULL')) dzieła potęgi.

+0

GENIUS. Pan, jesteś święty. – JeremyFelix

+0

Myślę, że lepiej jest umieścić "IS NOT" jako drugi argument, a wartość jest po prostu NULL. Tak jak odpowiedział Gerry. Używanie DB :: expr jest ładne, ale dodaje niepotrzebne dodatkowe obciążenie (w tym przypadku). – SpadXIII

+2

Tak, najlepszym rozwiązaniem jest -> gdzie ('col', 'IS NOT', NULL) – JeremyFelix

9

Działa to z modułem ORM i jest nieco mniej pisane.

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

Czy to faktycznie działa? Jakie jest produkowane zapytanie? –

-1

To powinno działać:

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

tym razem tęskniłeś :) – Kemo

+0

Sprawdzanie wartości to null, OP wanted nie ma wartości null. –

0

Klauzula WHERE przyjmuje 3 argumenty, pierwszy i trzeci, które zawsze próbowano konwertować do formatu backticks (tzn. Dopóki dostarczyć DB :: wyrażenie na co najmniej 3 argumentu można uciec pozostawiając nic w 1. i 2. args oraz następujące powinny działać także:

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

Potwierdzają to prace nad Kohana 3.2 i wyżej.

Powiązane problemy