1. 程式人生 > >Thinkphp中如何表達MYSQL中的某欄位不為空is not null

Thinkphp中如何表達MYSQL中的某欄位不為空is not null

Thinkphp 的文件經常不夠完整的表達MYSQL的各種組合,很多東西需要被嘗試後才能知道,筆者就遇到過一個問題,MYSQL查詢語句中有個表示式is not null ,在thinkphp中就不能用“=” 或者簡單的eq等來表示。
有一種變相的處理方法就是直接把where中的array引數換成string,即比如我要查詢某表的pic不為空

$data = D('tablename');
$data->where("pic is not null")->select();

 

而有時候我已經寫了一堆的array引數,實在不願意為了一個欄位改變整體格式,
經過多次測試發現了TP還是支援MYSQL不為空的array編寫方式的,即

$data = D('tablename');
$map = array();
$map['pic'] = array('exp','is not null');

 

其中的exp表示MYSQL的表示式查詢,支援各種MYSQL語句的新增
該寫法同時支援在update中對欄位進行自動增值
比如
SQL語句

update table set data=data+1;

用THINKPHP可以表達為

$data['data'] = array('exp','data+1');
$table->where(1)->save($data);

原文連結:http://www.thinkphp.cn/code/1693.html