好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧實(shí)例總結(jié)

tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧實(shí)例總結(jié)

熱門(mén)標(biāo)簽:電子地圖標(biāo)注怎么修改 廈門(mén)400電話辦理選易號(hào)網(wǎng) 梧州市機(jī)器人外呼系統(tǒng)怎么樣 地圖標(biāo)注符號(hào)樣式有 菏澤語(yǔ)音外呼系統(tǒng)運(yùn)營(yíng)商 天客通地圖標(biāo)注 公司外呼系統(tǒng)中心 如何在世界地圖標(biāo)注 臨沂crm外呼系統(tǒng)平臺(tái)

本文實(shí)例講述了tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧。分享給大家供大家參考,具體如下:

快捷查詢(xún)

快捷查詢(xún)方式是一種多字段相同查詢(xún)條件的簡(jiǎn)化寫(xiě)法,可以進(jìn)一步簡(jiǎn)化查詢(xún)條件的寫(xiě)法,在多個(gè)字段之間用|分割表示OR查詢(xún),用分割表示AND查詢(xún),可以實(shí)現(xiàn)下面的查詢(xún),例如:

Db::table('think_user')
 ->where('name|title','like','thinkphp%')
 ->where('create_timeupdate_time','>',0)
 ->find();

生成的查詢(xún)SQL是:

SELECT * FROM 
 `think_user` 
WHERE ( 
 `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%' ) 
AND ( 
 `create_time` > 0 AND `update_time` > 0 ) 
LIMIT 1

快捷查詢(xún)支持所有的查詢(xún)表達(dá)式。

區(qū)間查詢(xún)

區(qū)間查詢(xún)是一種同一字段多個(gè)查詢(xún)條件的簡(jiǎn)化寫(xiě)法,例如:

Db::table('think_user')
 ->where('name', ['like', '%thinkphp%'], ['like', '%kancloud%'], 'or')
 ->where('id', ['>', 0], ['>', 10], 'and')
 ->find();

生成的SQL語(yǔ)句為:

SELECT * FROM 
 `think_user` 
WHERE ( 
 `name` LIKE '%thinkphp%' OR `name` LIKE '%kancloud%' ) 
AND ( 
 `id` > 0 AND `id` > 10 )
LIMIT 1

區(qū)間查詢(xún)的查詢(xún)條件必須使用數(shù)組定義方式,支持所有的查詢(xún)表達(dá)式。

下面的查詢(xún)方式是錯(cuò)誤的:

Db::table('think_user')
 ->where('name', ['like', 'thinkphp%'], ['like', '%thinkphp'])
 ->where('id', 5, ['>', 10], 'or')
 ->find();

區(qū)間查詢(xún)其實(shí)可以用下面的方式替代,更容易理解,因?yàn)椴樵?xún)構(gòu)造器支持對(duì)同一個(gè)字段多次調(diào)用查詢(xún)條件,例如:

Db::table('think_user')
 ->where('name', 'like', '%think%')
 ->where('name', 'like', '%php%')
 ->where('id', 'in', [1, 5, 80, 50])
 ->where('id', '>', 10)
 ->find();

批量(字段)查詢(xún)

可以進(jìn)行多個(gè)條件的批量條件查詢(xún)定義,例如:

Db::table('think_user')
 ->where([
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', '>', 0],
 ['status', '=', 1],
 ])
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM 
 `think_user` 
WHERE 
 `name` LIKE 'thinkphp%' 
AND 
 `title` LIKE '%thinkphp' 
AND 
 `id` > 0 
AND 
 `status` = '1'

注意,V5.1.7+版本數(shù)組方式如果使用exp查詢(xún)的話,一定要用raw方法。

Db::table('think_user')
 ->where([
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', 'exp', Db::raw('>score')],
 ['status', '=', 1],
 ])
 ->select();

數(shù)組查詢(xún)方式,確保你的查詢(xún)數(shù)組不能被用戶(hù)提交數(shù)據(jù)控制,用戶(hù)提交的表單數(shù)據(jù)應(yīng)該是作為查詢(xún)數(shù)組的一個(gè)元素傳入,如下:

Db::table('think_user')
 ->where([
 ['name', 'like', $name . '%'],
 ['title', 'like', '%' . $title],
 ['id', '>', $id],
 ['status', '=', $status],
 ])
 ->select();

注意,相同的字段的多次查詢(xún)條件可能會(huì)合并,如果希望某一個(gè)where方法里面的條件單獨(dú)處理,可以使用下面的方式,避免被其它條件影響。

$map = [
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', '>', 0],
 ];
Db::table('think_user')
 ->where([ $map ])
 ->where('status',1)
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM 
 `think_user` 
WHERE ( 
 `name` LIKE 'thinkphp%' 
AND 
 `title` LIKE '%thinkphp' 
AND 
 `id` > 0 ) 
AND 
 `status` = '1'

如果使用下面的多個(gè)條件組合

$map1 = [
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ];
 
$map2 = [
 ['name', 'like', 'kancloud%'],
 ['title', 'like', '%kancloud'],
 ]; 
 
Db::table('think_user')
 ->whereOr([ $map1, $map2 ])
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM 
 `think_user` 
WHERE ( 
 `name` LIKE 'thinkphp%' 
AND 
 `title` LIKE '%thinkphp' ) 
OR ( 
 `name` LIKE 'kancloud%' 
AND 
 `title` LIKE '%kancloud' )

善用多維數(shù)組查詢(xún),可以很方便的拼裝出各種復(fù)雜的SQL語(yǔ)句

數(shù)組對(duì)象查詢(xún)(V5.1.21+)

對(duì)于習(xí)慣或者重度依賴(lài)數(shù)組查詢(xún)條件的用戶(hù)來(lái)說(shuō),可以選擇數(shù)組對(duì)象查詢(xún),該對(duì)象完成了普通數(shù)組方式查詢(xún)和系統(tǒng)的查詢(xún)表達(dá)式之間的橋接,但相較于系統(tǒng)推薦的查詢(xún)表達(dá)式方式而言,需要注意變量的安全性,避免產(chǎn)生SQL注入的情況

使用方法如下:

use think\db\Where;
 
$map = [
 'name' => ['like', 'thinkphp%'],
 'title' => ['like', '%think%'],
 'id' => ['>', 10],
 'status' => 1,
];
 
$where  = new Where;
$where['id'] = ['in', [1, 2, 3]];
$where['title'] = ['like', '%php%'];
 
Db::table('think_user')
 ->where(new Where($map))
 ->whereOr($where->enclose())
 ->select();

enclose方法表示該查詢(xún)條件兩邊會(huì)加上括號(hào)包起來(lái)。

使用數(shù)組對(duì)象查詢(xún)的情況請(qǐng)一定要注意做好數(shù)據(jù)類(lèi)型檢查,盡量避免讓用戶(hù)決定你的數(shù)據(jù)。

生成的SQL是:

SELECT * FROM 
 `think_user` 
WHERE 
 `name` LIKE 'thinkphp%' 
AND 
 `title` LIKE '%think%' 
AND 
 `id` > 10 
AND 
 `status` =1 
OR ( 
 `id` IN (1,2,3) 
AND 
 `title` LIKE '%php%' )

閉包查詢(xún)

$name = 'thinkphp';
$id = 10;
Db::table('think_user')->where(function ($query) use($name, $id) {
 $query->where('name', $name)
 ->whereOr('id', '>', $id);
})->select();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` WHERE ( `name` = 'thinkphp' OR `id` > 10 )

可見(jiàn)每個(gè)閉包條件兩邊也會(huì)自動(dòng)加上括號(hào),但需要注意,使用閉包查詢(xún)的時(shí)候不能使用cache(true)數(shù)據(jù)緩存,而應(yīng)該使用指定key的方式例如cache('key')

混合查詢(xún)

可以結(jié)合前面提到的所有方式進(jìn)行混合查詢(xún),例如:

Db::table('think_user')
 ->where('name', ['like', 'thinkphp%'], ['like', '%thinkphp'])
 ->where(function ($query) {
 $query->where('id', ['', 10], ['>', 100], 'or');
 })
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM 
 `think_user` 
WHERE ( 
 `name` LIKE 'thinkphp%' 
AND 
 `name` LIKE '%thinkphp' ) 
AND ( 
 `id`  10 or `id` > 100 )

字符串條件查詢(xún)

對(duì)于一些實(shí)在復(fù)雜的查詢(xún),也可以直接使用原生SQL語(yǔ)句進(jìn)行查詢(xún),例如:

Db::table('think_user')
 ->where('id > 0 AND name LIKE "thinkphp%"')
 ->select();

為了安全起見(jiàn),我們可以對(duì)字符串查詢(xún)條件使用參數(shù)綁定,例如:

Db::table('think_user')
 ->where('id > :id AND name LIKE :name ', ['id' => 0, 'name' => 'thinkphp%'])
 ->select();

V5.1.8+版本開(kāi)始,如果你要使用字符串條件查詢(xún),推薦使用whereRaw方法。

Db::table('think_user')
 ->whereRaw('id > :id AND name LIKE :name ', ['id' => 0, 'name' => 'thinkphp%'])
 ->select();

使用Query對(duì)象查詢(xún)(V5.1.5+)

V5.1.5+版本開(kāi)始,可以通過(guò)調(diào)用一次where方法傳入Query對(duì)象來(lái)進(jìn)行查詢(xún)。

$query = new \think\db\Query;
$query->where('id','>',0)
	->where('name','like','%thinkphp');
 
Db::table('think_user')
 ->where($query)
 ->select();

Query對(duì)象的where方法僅能調(diào)用一次,如果query對(duì)象里面使用了非查詢(xún)條件的鏈?zhǔn)椒椒ǎ瑒t不會(huì)傳入當(dāng)前查詢(xún)。

$query = new \think\db\Query;
$query->where('id','>',0)
	->where('name','like','%thinkphp')
 ->order('id','desc') // 不會(huì)傳入后面的查詢(xún)
 ->field('name,id'); // 不會(huì)傳入后面的查詢(xún)
 
Db::table('think_user')
 ->where($query)
 ->where('title','like','thinkphp%') // 有效
 ->select();

快捷方法

系統(tǒng)封裝了一系列快捷方法,用于簡(jiǎn)化查詢(xún),包括:

方法 作用
whereOr 字段OR查詢(xún)
whereXor 字段XOR查詢(xún)
whereNull 查詢(xún)字段是否為Null
whereNotNull 查詢(xún)字段是否不為Null
whereIn 字段IN查詢(xún)
whereNotIn 字段NOT IN查詢(xún)
whereBetween 字段BETWEEN查詢(xún)
whereNotBetween 字段NOT BETWEEN查詢(xún)
whereLike 字段LIKE查詢(xún)
whereNotLike 字段NOT LIKE查詢(xún)
whereExists EXISTS條件查詢(xún)
whereNotExists NOT EXISTS條件查詢(xún)
whereExp 表達(dá)式查詢(xún)
whereColumn 比較兩個(gè)字段

下面舉例說(shuō)明下兩個(gè)字段比較的查詢(xún)條件whereColumn方法的用法。

查詢(xún)update_time大于create_time的用戶(hù)數(shù)據(jù)

Db::table('think_user')
 ->whereColumn('update_time','>','create_time')
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` WHERE ( `update_time` > `create_time` ) 

查詢(xún)namenickname相同的用戶(hù)數(shù)據(jù)

Db::table('think_user')
 ->whereColumn('name','=','nickname')
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` WHERE ( `name` = `nickname` )

相同字段條件也可以簡(jiǎn)化為

Db::table('think_user')
 ->whereColumn('name','nickname')
 ->select();

高級(jí)查詢(xún)

快捷查詢(xún)

快捷查詢(xún)方式是一種多字段相同查詢(xún)條件的簡(jiǎn)化寫(xiě)法,可以進(jìn)一步簡(jiǎn)化查詢(xún)條件的寫(xiě)法,在多個(gè)字段之間用|分割表示OR查詢(xún),用分割表示AND查詢(xún),可以實(shí)現(xiàn)下面的查詢(xún),例如:

Db::table('think_user')
 ->where('name|title','like','thinkphp%')
 ->where('create_timeupdate_time','>',0)
 ->find();

生成的查詢(xún)SQL是:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%' ) 
AND ( `create_time` > 0 AND `update_time` > 0 ) 
LIMIT 1

快捷查詢(xún)支持所有的查詢(xún)表達(dá)式。

區(qū)間查詢(xún)

區(qū)間查詢(xún)是一種同一字段多個(gè)查詢(xún)條件的簡(jiǎn)化寫(xiě)法,例如:

Db::table('think_user')
 ->where('name', ['like', '%thinkphp%'], ['like', '%kancloud%'], 'or')
 ->where('id', ['>', 0], ['>', 10], 'and')
 ->find();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE '%thinkphp%' OR `name` LIKE '%kancloud%' ) 
AND ( `id` > 0 AND `id` > 10 ) 
LIMIT 1

區(qū)間查詢(xún)的查詢(xún)條件必須使用數(shù)組定義方式,支持所有的查詢(xún)表達(dá)式。

下面的查詢(xún)方式是錯(cuò)誤的:

Db::table('think_user')
 ->where('name', ['like', 'thinkphp%'], ['like', '%thinkphp'])
 ->where('id', 5, ['>', 10], 'or')
 ->find();

區(qū)間查詢(xún)其實(shí)可以用下面的方式替代,更容易理解,因?yàn)椴樵?xún)構(gòu)造器支持對(duì)同一個(gè)字段多次調(diào)用查詢(xún)條件,例如:

Db::table('think_user')
 ->where('name', 'like', '%think%')
 ->where('name', 'like', '%php%')
 ->where('id', 'in', [1, 5, 80, 50])
 ->where('id', '>', 10)
 ->find();

批量(字段)查詢(xún)

可以進(jìn)行多個(gè)條件的批量條件查詢(xún)定義,例如:

Db::table('think_user')
 ->where([
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', '>', 0],
 ['status', '=', 1],
 ])
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` 
WHERE `name` LIKE 'thinkphp%' 
AND `title` LIKE '%thinkphp' 
AND `id` > 0 
AND `status` = '1'

注意,V5.1.7+版本數(shù)組方式如果使用exp查詢(xún)的話,一定要用raw方法。

Db::table('think_user')
 ->where([
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', 'exp', Db::raw('>score')],
 ['status', '=', 1],
 ])
 ->select();

數(shù)組查詢(xún)方式,確保你的查詢(xún)數(shù)組不能被用戶(hù)提交數(shù)據(jù)控制,用戶(hù)提交的表單數(shù)據(jù)應(yīng)該是作為查詢(xún)數(shù)組的一個(gè)元素傳入,如下:

Db::table('think_user')
 ->where([
 ['name', 'like', $name . '%'],
 ['title', 'like', '%' . $title],
 ['id', '>', $id],
 ['status', '=', $status],
 ])
 ->select();

注意,相同的字段的多次查詢(xún)條件可能會(huì)合并,如果希望某一個(gè)where方法里面的條件單獨(dú)處理,可以使用下面的方式,避免被其它條件影響。

$map = [
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ['id', '>', 0],
 ];
Db::table('think_user')
 ->where([ $map ])
 ->where('status',1)
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 ) 
AND `status` = '1'

如果使用下面的多個(gè)條件組合

$map1 = [
 ['name', 'like', 'thinkphp%'],
 ['title', 'like', '%thinkphp'],
 ];
 
$map2 = [
 ['name', 'like', 'kancloud%'],
 ['title', 'like', '%kancloud'],
 ]; 
 
Db::table('think_user')
 ->whereOr([ $map1, $map2 ])
 ->select();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' ) 
OR ( `name` LIKE 'kancloud%' AND `title` LIKE '%kancloud' )

善用多維數(shù)組查詢(xún),可以很方便的拼裝出各種復(fù)雜的SQL語(yǔ)句

數(shù)組對(duì)象查詢(xún)(V5.1.21+)

對(duì)于習(xí)慣或者重度依賴(lài)數(shù)組查詢(xún)條件的用戶(hù)來(lái)說(shuō),可以選擇數(shù)組對(duì)象查詢(xún),該對(duì)象完成了普通數(shù)組方式查詢(xún)和系統(tǒng)的查詢(xún)表達(dá)式之間的橋接,但相較于系統(tǒng)推薦的查詢(xún)表達(dá)式方方式而言,需要注意變量的安全性,避免產(chǎn)生SQL注入的情況

使用方法如下:

use think\db\Where;
 
$map = [
 'name' => ['like', 'thinkphp%'],
 'title' => ['like', '%think%'],
 'id' => ['>', 10],
 'status' => 1,
];
 
$where  = new Where;
$where['id'] = ['in', [1, 2, 3]];
$where['title'] = ['like', '%php%'];
 
Db::table('think_user')
 ->where(new Where($map))
 ->whereOr($where->enclose())
 ->select();

enclose方法表示該查詢(xún)條件兩邊會(huì)加上括號(hào)包起來(lái)。

使用數(shù)組對(duì)象查詢(xún)的情況請(qǐng)一定要注意做好數(shù)據(jù)類(lèi)型檢查,盡量避免讓用戶(hù)決定你的數(shù)據(jù)。

生成的SQL是:

SELECT * FROM `think_user` 
WHERE `name` LIKE 'thinkphp%' 
AND `title` LIKE '%think%' 
AND `id` > 10 
AND `status` =1 
OR ( `id` IN (1,2,3) AND `title` LIKE '%php%' )

閉包查詢(xún)

$name = 'thinkphp';
$id = 10;
Db::table('think_user')->where(function ($query) use($name, $id) {
 $query->where('name', $name)
 ->whereOr('id', '>', $id);
})->select();

生成的SQL語(yǔ)句為:

SELECT * FROM `think_user` WHERE ( `name` = 'thinkphp' OR `id` > 10 )

可見(jiàn)每個(gè)閉包條件兩邊也會(huì)自動(dòng)加上括號(hào),但需要注意,使用閉包查詢(xún)的時(shí)候不能使用cache(true)數(shù)據(jù)緩存,而應(yīng)該使用指定key的方式例如cache('key')

混合查詢(xún)

可以結(jié)合前面提到的所有方式進(jìn)行混合查詢(xún),例如:

Db::table('think_user')
 ->where('name', ['like', 'thinkphp%'], ['like', '%thinkphp'])
 ->where(function ($query) {
 $query->where('id', ['', 10], ['>', 100], 'or');
 })
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp' ) 
AND ( `id`  10 or `id` > 100 )

字符串條件查詢(xún)

對(duì)于一些實(shí)在復(fù)雜的查詢(xún),也可以直接使用原生SQL語(yǔ)句進(jìn)行查詢(xún),例如:

Db::table('think_user')
 ->where('id > 0 AND name LIKE "thinkphp%"')
 ->select();

為了安全起見(jiàn),我們可以對(duì)字符串查詢(xún)條件使用參數(shù)綁定,例如:

Db::table('think_user')
 ->where('id > :id AND name LIKE :name ', ['id' => 0, 'name' => 'thinkphp%'])
 ->select();

V5.1.8+版本開(kāi)始,如果你要使用字符串條件查詢(xún),推薦使用whereRaw方法。

Db::table('think_user')
 ->whereRaw('id > :id AND name LIKE :name ', ['id' => 0, 'name' => 'thinkphp%'])
 ->select();

使用Query對(duì)象查詢(xún)(V5.1.5+)

V5.1.5+版本開(kāi)始,可以通過(guò)調(diào)用一次where方法傳入Query對(duì)象來(lái)進(jìn)行查詢(xún)。

$query = new \think\db\Query;
$query->where('id','>',0)
	->where('name','like','%thinkphp');
 
Db::table('think_user')
 ->where($query)
 ->select();

Query對(duì)象的where方法僅能調(diào)用一次,如果query對(duì)象里面使用了非查詢(xún)條件的鏈?zhǔn)椒椒ǎ瑒t不會(huì)傳入當(dāng)前查詢(xún)。

$query = new \think\db\Query;
$query->where('id','>',0)
	->where('name','like','%thinkphp')
 ->order('id','desc') // 不會(huì)傳入后面的查詢(xún)
 ->field('name,id'); // 不會(huì)傳入后面的查詢(xún)
 
Db::table('think_user')
 ->where($query)
 ->where('title','like','thinkphp%') // 有效
 ->select();

快捷方法

系統(tǒng)封裝了一系列快捷方法,用于簡(jiǎn)化查詢(xún),包括:

方法 作用
whereOr 字段OR查詢(xún)
whereXor 字段XOR查詢(xún)
whereNull 查詢(xún)字段是否為Null
whereNotNull 查詢(xún)字段是否不為Null
whereIn 字段IN查詢(xún)
whereNotIn 字段NOT IN查詢(xún)
whereBetween 字段BETWEEN查詢(xún)
whereNotBetween 字段NOT BETWEEN查詢(xún)
whereLike 字段LIKE查詢(xún)
whereNotLike 字段NOT LIKE查詢(xún)
whereExists EXISTS條件查詢(xún)
whereNotExists NOT EXISTS條件查詢(xún)
whereExp 表達(dá)式查詢(xún)
whereColumn 比較兩個(gè)字段

下面舉例說(shuō)明下兩個(gè)字段比較的查詢(xún)條件whereColumn方法的用法。

查詢(xún)update_time大于create_time的用戶(hù)數(shù)據(jù)

Db::table('think_user')
 ->whereColumn('update_time','>','create_time')
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` WHERE ( `update_time` > `create_time` ) 

查詢(xún)namenickname相同的用戶(hù)數(shù)據(jù)

Db::table('think_user')
 ->whereColumn('name','=','nickname')
 ->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` WHERE ( `name` = `nickname` )

相同字段條件也可以簡(jiǎn)化為

Db::table('think_user')
 ->whereColumn('name','nickname')
 ->select();

V5.1.11+版本開(kāi)始,支持?jǐn)?shù)組方式比較多個(gè)字段

Db::name('user')->whereColumn([
	['title', '=', 'name'],
 ['update_time', '>=', 'create_time'],
])->select();

生成的SQL語(yǔ)句是:

SELECT * FROM `think_user` 
WHERE ( `name` = `nickname` AND `update_time` > `create_time` ) 

動(dòng)態(tài)查詢(xún)

查詢(xún)構(gòu)造器還提供了兩個(gè)動(dòng)態(tài)查詢(xún)機(jī)制,用于簡(jiǎn)化查詢(xún)條件,包括getBygetFieldBy

動(dòng)態(tài)查詢(xún) 描述
whereFieldName 查詢(xún)某個(gè)字段的值
whereOrFieldName 查詢(xún)某個(gè)字段的值
getByFieldName 根據(jù)某個(gè)字段查詢(xún)
getFieldByFieldName 根據(jù)某個(gè)字段獲取某個(gè)值

其中FieldName表示數(shù)據(jù)表的實(shí)際字段名稱(chēng)的駝峰法表示,假設(shè)數(shù)據(jù)表user中有emailnick_name字段,我們可以這樣來(lái)查詢(xún)。

// 根據(jù)郵箱(email)查詢(xún)用戶(hù)信息
$user = Db::table('user')
	->whereEmail('thinkphp@qq.com')
 ->find();
 
// 根據(jù)昵稱(chēng)(nick_name)查詢(xún)用戶(hù)
$email = Db::table('user')
 ->whereNickName('like', '%流年%')
 ->select();
 
// 根據(jù)郵箱查詢(xún)用戶(hù)信息
$user = Db::table('user')
 ->getByEmail('thinkphp@qq.com');
 
// 根據(jù)昵稱(chēng)(nick_name)查詢(xún)用戶(hù)信息
$user = Db::table('user')
 ->field('id,name,nick_name,email')
 ->getByNickName('流年');
 
// 根據(jù)郵箱查詢(xún)用戶(hù)的昵稱(chēng)
$nickname = Db::table('user')
 ->getFieldByEmail('thinkphp@qq.com', 'nick_name');
 
// 根據(jù)昵稱(chēng)(nick_name)查詢(xún)用戶(hù)郵箱
$email = Db::table('user')
 ->getFieldByNickName('流年', 'email');

getBygetFieldBy方法只會(huì)查詢(xún)一條記錄,可以和其它的鏈?zhǔn)椒椒ù钆涫褂?/p>

條件查詢(xún)

5.1的查詢(xún)構(gòu)造器支持條件查詢(xún),例如:

Db::name('user')->when($condition, function ($query) {
 // 滿(mǎn)足條件后執(zhí)行
 $query->where('score', '>', 80)->limit(10);
})->select();

并且支持不滿(mǎn)足條件的分支查詢(xún)

Db::name('user')->when($condition, function ($query) {
 // 滿(mǎn)足條件后執(zhí)行
 $query->where('score', '>', 80)->limit(10);
}, function ($query) {
 // 不滿(mǎn)足條件執(zhí)行
 $query->where('score', '>', 60);
});

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • tp5.1 框架路由操作-URL生成實(shí)例分析
  • tp5.1 框架join方法用法實(shí)例分析
  • tp5.1框架數(shù)據(jù)庫(kù)子查詢(xún)操作實(shí)例分析
  • tp5.1 框架數(shù)據(jù)庫(kù)常見(jiàn)操作詳解【添加、刪除、更新、查詢(xún)】
  • tp5.1 框架查詢(xún)表達(dá)式用法詳解
  • TP5框架安全機(jī)制實(shí)例分析
  • TP5框架實(shí)現(xiàn)自定義分頁(yè)樣式的方法示例
  • PHP tp5中使用原生sql查詢(xún)代碼實(shí)例

標(biāo)簽:黃石 郴州 貴陽(yáng) 迪慶 雞西 瀘州 白城 綿陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧實(shí)例總結(jié)》,本文關(guān)鍵詞  tp5.1,框架,數(shù)據(jù)庫(kù),高級(jí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧實(shí)例總結(jié)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于tp5.1 框架數(shù)據(jù)庫(kù)高級(jí)查詢(xún)技巧實(shí)例總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲春色一区二区三区| 美女吸乳羞羞动漫| 黄免费网站| 3d动漫在线观看免费入口| 亚洲欧美日韩中文字幕| 中文人妻AV久久人妻18| 99精品视频在线在线视频观看| 我破了她的小嫩苞| h视频在线免费看| 成年美女黄网站色大片app| 女教师用??夹我的??动漫 | 偷窥日本公共浴室洗澡视频| 在线观看色网站| 免费播放婬乱婬视频国产| 亚洲91无码精品一区在线播放| 舔下面视频在线观看| 宝贝你知道我忍得有多辛苦 | 51丨国产丨白浆秘?| 果冻传媒AV精品国产网站| 嗯啊好厉害| 精品一区二区三区视频日产| 春天影视在线观看免费| 美女露乳房| 色婷婷AV国产精品欧美毛片| 佳佳伦影院理片| 欧美日韩亚洲国产一区二区综合 | 酒吧大姐大| 波多野结衣被躁120次| 国产露脸精品一区二区| 欧美伊人亚洲伊人色综合动图| 韩国电影瑜伽| 两攻一受4p双龙h男男| 国产在线观看99| 西班牙巜做爰猛烈大尺度电影| 国产精品秘?入口麻豆张津瑜 | 美女大便p0○pngshing| 乡下农村妇女一级毛片| 亚洲91无码精品一区在线播放| 五十路一区二区三区视频| 送给儿子生日礼物是妈妈身体| 日韩中文在线播放|