2010-09-26 26 views
13

Có thể với Kohana v3 Trình tạo truy vấn để sử dụng toán tử IS NOT NULL không?"WHERE cột KHÔNG NULL" với Trình tạo truy vấn Kohana v3

Các nơi ($ cột, $ op, $ value) phương pháp yêu cầu tất cả ba thông số và thậm chí nếu tôi chỉ định

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

nó được xây dựng và truy vấn như không hợp lệ.

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

v3 là tốt. và bạn đã rất gần! Tất cả những gì bạn phải làm, đã di chuyển NULL đến đối số giá trị: '-> where ('col', 'IS NOT', NULL)' – SpadXIII

+0

Bây giờ v3 có tài liệu tốt hơn và tôi đã có cơ hội làm quen với - Tôi rất thích nó. – JeremyFelix

Trả lời

23

Các nhà điều hành không được thoát:

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

Không cần phải sử dụng DB :: expr, Kohana đã hỗ trợ những gì bạn muốn.

3

Không chắc chắn (bây giờ là 3 giờ sáng) nhưng ->where('col', '', DB::expr('IS NOT NULL')) có thể hoạt động.

+0

GENIUS. Bạn thưa bạn, là một vị thánh. – JeremyFelix

+0

Tôi nghĩ tốt hơn nên đặt 'KHÔNG' làm đối số thứ hai và giá trị chỉ là NULL. Giống như Gerry đã trả lời. Sử dụng một DB :: expr là tốt đẹp, nhưng thêm không cần thiết thêm chi phí (trong trường hợp này) – SpadXIII

+2

Yeah giải pháp tốt nhất là -> nơi ('col', 'IS NOT', NULL) – JeremyFelix

9

Tính năng này hoạt động với mô-đun ORM và ít gõ hơn một chút.

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

Điều này thực sự làm việc? Truy vấn được tạo ra là gì? –

-1

này nên làm việc:

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

u đã bỏ lỡ thời gian này :) – Kemo

+0

Đó là việc kiểm tra giá trị là không, OP muốn không phải là rỗng. –

0

Mệnh đề WHERE lấy 3 đối số, số 1 và số 3 luôn được cố chuyển đổi thành định dạng backticks (tức là `bảng`.`field`). Chừng nào bạn cung cấp DB :: expr trên ít nhất là đối số thứ 3, bạn có thể nhận được ngay với để lại gì trong 1 và args thứ 2 và sau đây nên làm việc cũng như:

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

này được xác nhận để làm việc trên Kohana 3.2 trở lên.

Các vấn đề liên quan