TP---where多條件查詢

TP的多條件查詢功能是非常強大的。
先上句代碼熱熱身:

Db::name('stu')->where(['name'=>'張三','sex'=>'男'])->select();

這就是一個簡單的多條件查詢
當然大家都知道,這種只是最簡單的“=”的形式,要是查詢類似於id大於3、姓張的人、年齡在18到30歲之間、位置在山東浙江北京其中一個……該怎麼辦?
下面就爲大家解答,爲了節約時間我把所有例子放到一個代碼中。

Db::name('stu')->
where([
	'id'=>['>','3'],
	'name'=>['like','張%'],
	'age'=>['between',['18','30']],
	'position'=>['in',['山東','浙江','北京']]
])->select();

着急用的朋友上面的代碼就應該足夠了,下面我們詳細介紹下具體where用法和其他技巧。
首先我個人並不喜歡直接在where條件中寫一大串,一般都是先存在變量中,最後放進語句中執行。

$where['id']=['>','3'];
$where['name']=['like','張%'];
$where['age']=['between',['18','30']];
//上面這句還可以這麼寫
//$where['age']=['between','18,30'];
$where['position']=['in',['山東','浙江','北京']];
//同樣in也可以換個寫法
//$where['position']=['in','山東,浙江,北京'];
Db::name('stu')->where($where)->select();

這種寫法有一定的好處,首先就是代碼清晰明瞭,其次就是方便查找錯誤;
而且還可以根據是否需要來增加條件(類似於搜索效果):
圖片

$where[1]=[1];
if($sex){
	//根據有無sex來添加條件,當有sex傳來時,查詢固定sex,沒有時查詢所有信息
	$where['sex']=['=',$sex];
}

這時候可能就有人問了,我想用not查詢怎麼辦,非常簡單:

$where['name']=['not like','張%'];

以上這些都是以and連接的查詢條件,那麼如果想用or該怎麼辦呢?
舉個例子相信大家就都明白了:

$where['id'] = [['<',3],['>',10],'or'];

放個大招!
當你實在不知道where條件怎麼寫,走投無路時,還有更直接方法,直接在where中寫sql條件,例如:

Db::name('stu')->where("sex='男' and age='女' or age<18")->select();
//當然,and也可以換成or
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章